Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iOS调度\u异步,在iOS 4上崩溃_Objective C_Ios - Fatal编程技术网

Objective c iOS调度\u异步,在iOS 4上崩溃

Objective c iOS调度\u异步,在iOS 4上崩溃,objective-c,ios,Objective C,Ios,我正在向不同线程上的服务器发出服务器请求。加载完成后,我会收到一个委托回调,它会更新tableView。起初,我注意到一些奇怪的行为,并认为这可能是因为一些UI元素没有在主线程上执行 我添加了下面的代码,解决了这个问题,但是代码在iOS 4设备上崩溃了(原来调度队列优先级后台与iOS 4不兼容) 如果删除第一个dispatch\u async,并且只调用dispatch\u get\u main\u queue,代码运行正常: dispatch_async(dispatch_get_main_q

我正在向不同线程上的服务器发出服务器请求。加载完成后,我会收到一个委托回调,它会更新tableView。起初,我注意到一些奇怪的行为,并认为这可能是因为一些UI元素没有在主线程上执行

我添加了下面的代码,解决了这个问题,但是代码在iOS 4设备上崩溃了(原来调度队列优先级后台与iOS 4不兼容)

如果删除第一个
dispatch\u async
,并且只调用
dispatch\u get\u main\u queue
,代码运行正常:

dispatch_async(dispatch_get_main_queue(), ^(void) {
  //Update view code etc...
});
在将我的更新发送到苹果之前,我想问一下这样做是否可以?该代码能否在iOS 4设备上正确运行


提前感谢。

调度队列\u优先级\u后台
仅在iOS 5及更高版本中可用

来自苹果文档

调度\队列\优先级\调度到队列运行的后台项目 背景优先;毕竟,队列被安排执行 已安排高优先级队列,并且系统在上运行项目 为后台状态设置优先级的线程。这样的线 具有最低优先级,并且任何磁盘I/O都会被限制以最小化 对系统的影响。在iOS 5.0及更高版本中提供

因此,如果你也在考虑为iOS 4发布应用程序,那么你就不能使用它

来源


但是,如果删除
DISPATCH\u QUEUE\u PRIORITY\u BACKGROUND
,您当前的代码将只在主ui线程中运行,这可能会导致您在执行远程请求时速度减慢

您可以在低于iOS 5的设备上始终使用
DISPATCH\u QUEUE\u PRIORITY\u LOW
。谢谢回复。您说过它只在主线程中运行,但只在括号内的部分代码中运行,对吗?我只是在所有后台工作完成后才将dispatch\u async放入回调中。明白了。非常感谢:)
dispatch_async(dispatch_get_main_queue(), ^(void) {
  //Update view code etc...
});