Variable, die nach der Blockausführung null zurückgibt
Ich versende eine Warteschlange, um einige flickr-Fotos in einem separaten Thread herunterzuladen (in viewWillAppear). Wenn ich den Inhalt des Arrays im Block protokolliere, wird alles perfekt angezeigt:
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
});
Wenn ich jedoch versuche, das Array zu protokollieren, das innerhalb des Blocks außerhalb des Blocks festgelegt wurde, wird null zurückgegeben.
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
Was ist das Problem hier? self.listOfCities ist als NSArray-Eigenschaft eingerichtet. Sobald es im Block festgelegt ist, sollte es außerhalb davon zugänglich sein.