XCode使用Reachability库提示“ui api called on a background thread”
问题背景
使用了一个检查网络状态的库(Reachability),希望在收到网络状态正常的消息时,再进行admob的初始化。结果调试时,发现XCode提示了这个错误:
ui api called on a background thread
值得一提是,功能上似乎没有什么影响。不过,为了防止意外,还是想办法处理一下。
解决方法
在收到网络状态变化时,发送消息到主线程进行处理。根据Reachability的文档,有两种方法:
- NSOperationQueue.mainQueue.addOperationWithBlock
// to update UI components from a block callback
// you need to dipatch this to the main thread
// this uses NSOperationQueue mainQueue
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// 这里调用只能在UI线程里进行的操作
}];
- dispatch_async(dispatch_get_main_queue(), ...)
// to update UI components from a block callback
// you need to dipatch this to the main thread
// this one uses dispatch_async they do the same thing (as above)
dispatch_async(dispatch_get_main_queue(), ^{
// 这里调用只能在UI线程里进行的操作
});
参考
扫一扫关注微信公众号:耿直的IT男阿斌
聊一聊IT男眼中的世界