我正在向不同线程上的服务器发出服务器请求。当它们完成加载时,我得到一个更新 tableView 的委托回调。起初,我注意到一些奇怪的行为,并认为这可能是因为某些 UI 元素没有在主线程上执行。
我添加了下面的代码,解决了问题,但是代码在 iOS 4 设备上崩溃了(原来 DISPATCH_QUEUE_PRIORITY_BACKGROUND 与 iOS 4 不兼容)
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0), ^(void) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
//Update view code etc...
});
});
如果我删除第一个dispatch_async
,并且只调用dispatch_get_main_queue
,代码运行良好:
dispatch_async(dispatch_get_main_queue(), ^(void) {
//Update view code etc...
});
在向 Apple 发送更新之前,我想问一下这样可以吗?代码会在 iOS 4 设备上正确运行吗?
提前致谢。