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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage