Reputation: 1555
I'm having a problem displaying an image in an image view, which is generated from data.
My program works as follows:
This code works fine on the simulator, however when I run it on my iPhone and select a row, the first selection works fine, then all corresponding selections have a noticeable delay in displaying the image..
Here is my code:
- (void)viewDidLoad {
[super viewDidLoad];
//Display the selected events data
name.text = eventName;
date.text = eventDate;
description.text = eventDescription;
//Set the title of the navigation bar
self.navigationItem.title = eventName;
/* Operation Queue init (autorelease) */
NSOperationQueue *queue = [NSOperationQueue new];
/* Create our NSInvocationOperation to call loadDataWithOperation, passing in nil */
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(loadDataWithOperation)
object:nil];
/* Add the operation to the queue */
[queue addOperation:operation];
[operation release];
}
//Threaded operation
- (void) loadDataWithOperation {
//Set the event image
UIImage *img = [UIImage imageWithData: eventImageURLData];
image.image = img;
}
Does anyone have any idea whats causing this?
Thanks,
Jack
Upvotes: 0
Views: 513
Reputation: 44633
Simulator doesn't have memory constraints so it rarely flags the low memory problem. As such you're leaking NSOperationQueue
s. I see that you've marked it as autorelease but see no autorelease message. You should probably fix that. In addition to this, you should be sending the image update code to the main thread.
Upvotes: 2