我正在将图像添加到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的视图。
如果我留下这个评论它不会崩溃,但我不是在这里泄漏内存吗?如果是这样,还有另一种方法可以做到这一点,以免泄漏。
非常感谢
答案 0 :(得分:2)
您应该发布imageView而不是图像。将该代码更改为以下内容:
[cell.contentView addSubview:imageView];
//[image release];
[imageView release];
您没有拥有图像,因为您没有使用alloc,new创建它,也没有保留它,因此您不应该发布它。你确实分配了一个imageView实例,这就是你发布的内容。我强烈建议您阅读this。
答案 1 :(得分:0)
您也可以使用:
UIImageView *imageView = [[[UIImageView alloc] initWithFrame:frame] autorelease];
为方便起见,