我正在尝试从 API 下载数据,然后再将其显示给用户。
这就是我正在做的事情:
dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(concurrentQueue, ^{
__block NSMutableArray *newImages;
dispatch_sync(concurrentQueue, ^{
newImages = [NSMutableArray array];
// images retrieved using `NSURLConnection sendSynchronousRequest`
});
dispatch_sync(dispatch_get_main_queue(), ^{
// display images to the user
});
});
我的问题是,既然newImages
是用 声明的__block
,我是否总是保证newImages
在主队列执行第二个任务时拥有最新的数据?如果不是,那么将该数组的内容传递到第二个块并确保其最新内容的最安全方法是什么?
我认为我的数据在某个地方搞砸了,因此我问这个问题。
如果这看起来不错,那么我将发布我的完整代码以寻求帮助,以防万一出现其他问题。