dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
NSLog(@"count: %lu", (unsigned long)[[myClass getFinalPath]count]);
dispatch_async(dispatch_get_main_queue(), ^(void){
//Run UI Updates
});
});
我正在尝试读取一个NSArray值,如果我在dispatch_async
之外读取NSArray值我能够读取它但是当它在里面它返回零时,我对dispatch_async
我很新。我在阅读Apple的教程和参考资料方面遇到了问题,如果有人可以提供帮助的话。我的[myClass getFinalPath]
返回一个充满了一定数量btw的NSArray。
答案 0 :(得分:0)
dispatch_async
捕获当前作用域中变量的值,并执行块内的代码"稍后"异步。这段代码
__block NSInteger i = 0;
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
i = 10;
NSLog(@"inside %ld", i);
});
NSLog(@"outside %ld", i);
日志始终先outside 0
,然后inside 10
您必须在调度块
中读取和处理数组答案 1 :(得分:0)
将数组作为参数传递给函数
(void)passArrayToDispatchSync:(NSArray *)someArray
{
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
NSLog(@"count: %lu", (unsigned long)[someArray count]);
dispatch_async(dispatch_get_main_queue(), ^(void){
//Run UI Updates
});
});
}