有时候Xcode布局的时候会打印出下面的错误警告,经测试和查阅资料,得出适合自己的解决方案:
错误提示:
This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.
出现原因:
关于UI的更新的部分没有放到主线程里面执行,而是放在了子线程进行
解决方案:
1、
//a、回主线程更新UI 使用Block
dispatch_async(dispatch_get_main_queue(), ^{
//执行更新UI的操作
});
//b、回主线程更新UI 不使用Block
[self performSelectorOnMainThread:<#(nonnull SEL)#> withObject:<#(nullable id)#> waitUntilDone:<#(BOOL)#>];
2、
//a、异步请求
[self showHudInView:self.view hint:@"数据请求中"];
//这句代码只能写到外面,否则会报上述错误
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//请求数据
[self RequestServerDetail];
});
//b、同步请求
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self showHudInView:self.view hint:@"数据请求中"];
//这句代码写到里面外面都可以
//请求数据
[self RequestServerDetail];
});