【发布时间】:2012-11-12 19:23:19
【问题描述】:
我正在调度一个队列以在单独的线程上下载一些 flickr 照片(在 viewWillAppear 中)。当我在块内记录数组的内容时,它完美地显示了一切:
dispatch_queue_t photoDowonload=dispatch_queue_create("photoDownload", NULL);
dispatch_async(photoDowonload, ^{
NSArray *photoList=[FlickrFetcher topPlaces]; //downloads flickr data
self.listOfCities=photoList;
NSLog(@"inside block: %@", self.listOfCities); //shows contents
});
但是当我尝试记录在块外的块内设置的数组时,它返回 null。
dispatch_queue_t photoDowonload=dispatch_queue_create("photoDownload", NULL);
dispatch_async(photoDowonload, ^{
NSArray *photoList=[FlickrFetcher topPlaces];
self.listOfCities=photoList;
});
NSLog(@"after block: %@", self.listOfCities); //returns null
这里有什么问题? self.listOfCities 设置为 NSArray 属性,因此一旦在块中设置它,它应该可以在其外部访问。
【问题讨论】:
标签: ios xcode multithreading null objective-c-blocks