dispatch_async について質問があります。ブロックが完了したときにのみ取得される値を返す必要があるため、キューの実行が終了したことを確認したい。
dispatch_queue_t downloadQueue = dispatch_queue_create("flickr downloader", NO);
dispatch_async(downloadQueue, ^{
NSArray *photos = [[FlickrFetcher photosInPlace:self.listOfPlacesChosenPlaceDictionary maxResults:50] mutableCopy];
dispatch_async(dispatch_get_main_queue(), ^{
self.photoAtThePlace = photos;
});
});
dispatch_release(downloadQueue);
return [self.photoAtThePlace mutableCopy];
現在、return 関数が呼び出されたときに、dispatch_async(dispatch_get_main_queue(), ^{..} がまだ実行されていないため、戻り値は nil になります。return が呼び出される前に、これが確実に行われるようにするにはどうすればよいですか?