Variable de retorno nula después de la ejecución del bloque.

Estoy enviando una cola para descargar algunas fotos de flickr en un hilo separado (en viewWillAppear). Cuando registro el contenido de la matriz dentro del bloque, se muestra todo perfectamente:

    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

});

pero cuando intento registrar la matriz que se estableció dentro del bloque fuera del bloque, devuelve un valor nulo.

    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

¿Cuál es el problema aquí? self.listOfCities se configura como una propiedad NSArray por lo que una vez que se establece en el bloque, debe ser accesible desde fuera.

Respuestas a la pregunta(3)

Su respuesta a la pregunta