別のスレッド(viewWillAppear内)にいくつかのflickr写真をダウンロードするためにキューをディスパッチしています。ブロック内の配列の内容をログに記録すると、すべてが完全に表示されます。
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プロパティとして設定されているため、ブロックに設定すると、その外部からアクセスできるようになります。