繁体   English   中英

如何在dispatch_async中读取NSArray值

[英]How to read NSArray value in dispatch_async

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还是很dispatch_async并且在理解Apple的教程和参考资料时遇到问题我已经读过,请有人帮助。 我的[myClass getFinalPath]返回一个NSArray,其中填充了一定数量的值btw。

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日志

您必须读取并处理调度块中的数组

将数组作为参数传递给函数

 (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
            });
        });
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM