帮助解决有关向单元格添加UIImageView的内存问题

时间:2011-05-16 23:50:29

标签: iphone uitableview uiimageview memory-management

我正在将图像添加到UITableView cellForRowAtIndexPath中的第一个单元格,如下所示:

if (row == 0) {
        UIImage *image = [UIImage imageNamed:@"numberOneIcon.png"];
        //create a framework for the ui image view
        CGRect frame = CGRectMake(10, 37, image.size.width, image.size.height);
        //initialize the ui image view
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
        imageView.image = image;

        [cell.contentView addSubview:imageView];
        [image release];
        //[imageView release];
}

如果我取消注释[imageView发布];当你“关闭”应用程序时会崩溃(按下主页bttn)然后返回应用程序并返回到包含UITableView的视图。

如果我留下这个评论它不会崩溃,但我不是在这里泄漏内存吗?如果是这样,还有另一种方法可以做到这一点,以免泄漏。

非常感谢

2 个答案:

答案 0 :(得分:2)

您应该发布imageView而不是图像。将该代码更改为以下内容:

[cell.contentView addSubview:imageView];
        //[image release];
        [imageView release];

您没有拥有图像,因为您没有使用alloc,new创建它,也没有保留它,因此您不应该发布它。你确实分配了一个imageView实例,这就是你发布的内容。我强烈建议您阅读this

答案 1 :(得分:0)

您也可以使用:

    UIImageView *imageView = [[[UIImageView alloc] initWithFrame:frame] autorelease];

为方便起见,