Objective-C UIimage imageWithData问题

时间:2011-06-11 15:08:38

标签: iphone objective-c multithreading ios uiimageview

我在使用数据生成的图像视图中显示图像时遇到问题。

我的程序如下:

  1. 用户从UITableView中选择一行。
  2. 选择后,会生成一个新视图(事件描述),并有3个NSStrings和一个NSData对象传递给它。
  3. 此数据显示在视图中,但是也会生成一个线程,将NSData转换为图像并显示为不显示描述视图的延迟。
  4. 此代码在模拟器上工作正常,但是当我在iPhone上运行并选择一行时,第一个选择工作正常,然后所有相应的选择在显示图像时有明显的延迟..

    这是我的代码:

        - (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;
        }
    

    有没有人知道这是什么造成的?

    谢谢,

    杰克

1 个答案:

答案 0 :(得分:2)

模拟器没有内存限制,因此它很少标记低内存问题。因此,你正在泄漏NSOperationQueue。我看到你已将它标记为自动释放但看不到自动释放消息。你应该解决这个问题。除此之外,您应该将图像更新代码发送到主线程。