If all you are trying to do is maintain access to the user interface stream, set up a short method to load it in the background and update imageView when it is done:
-(void)backgroundLoadImageFromPath:(NSString*)path {
UIImage *newImage = [UIImage imageWithContentsOfFile:path];
[myImageView performSelectorOnMainThread:@selector(setImage:) withObject:newImage waitUntilDone:YES];
}
This assumes that it myImageViewis a member variable of the class. Now just run it in the background from any thread:
[self performSelectorInBackground:@selector(backgroundLoadImageFromPath:) withObject:path]
, backgroundLoadImageFromPath , setImage: , , setImage: .