开发者

Objective-C UImage imageWithData Problem

I'm having a problem displaying an image in an image view, which is generated from data.

My program works as follows:

  1. The user selects a row from a UITableView.
  2. Upon selection, a new view (Event Description) is generated and has 3 NSStrings and an NSData object passed to it.
  3. This data is displayed in the view, however a thread is also spawned to convert the NSData into an image and display it as without that there is a slight delay in displaying the description view.

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;开发者_StackOverflow社区
    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


Simulator doesn't have memory constraints so it rarely flags the low memory problem. As such you're leaking NSOperationQueues. 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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜