ios - setting property in dispatch_async but property is NULL after block finishes -


i using following code change property called topplaces inside view controller. line [flickrfetcher topplaces] returns nsarray , property topplaces is, of course, nsarray.

dispatch_queue_t downloadqueue = dispatch_queue_create("flickr topplace", null); dispatch_async(downloadqueue, ^{     nsarray *topplaces = [flickrfetcher topplaces];     dispatch_async(dispatch_get_main_queue(), ^{         self.topplaces = topplaces;     }); }); dispatch_release(downloadqueue); 

however, after block finishes executing, if log value of self.topplaces, still null reason. there missing?

your ivar not set until after current method has finished. call [flickrfetcher topplaces] running in parallel current method , takes random amount of time complete. when complete, makes call main thread, executed on next iteration of run loop

this means in second dispatch_async() block need call methods display data after setting ivar.


Comments

Popular posts from this blog

user interface - Python attempting to create a simple gui, getting "AttributeError: 'MainMenu' object has no attribute 'intro_screen'" -

jquery - Common JavaScript snippet to share files on Google Drive, Dropbox, Box.net or SkyDrive -

Android Gson.fromJson error -