我们是否需要释放UIImage对象,即使没有分配内存?

时间:2010-03-26 09:04:03

标签: iphone objective-c uiimage

我添加了一个图片到按钮

UIImage* deleteImage = [UIImage imageNamed:@"Delete.png"];
CGRect imageFrame=CGRectMake(-4,-4, 310, 55);
[btn setFrame:imageFrame];
btn.backgroundColor=[UIColor clearColor];
[btn setBackgroundImage:deleteImage forState:UIControlStateNormal];
[btn setTitle:@"Delete" forState:UIControlStateNormal];
[btn addTarget:self  action:@selector(editDeleteAction) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:btn];
[deleteImage release];// do we need to release the image here

如果我在这里发布它的工作正常,但在对象分配中,图像数量的数量正在增加。

2 个答案:

答案 0 :(得分:2)

如果使用imageNamed:消息创建图像,则不必释放它,因为您将获得自动释放的图像。

仅当您使用其中一个init ...:消息创建图像时,您必须稍后将其释放。

答案 1 :(得分:0)

imageNamed :”方法提供自动释放的对象,因此您不必释放对象。

FYI :“ imageNamed :”方法使用内部缓存(如果imageNamed:方法广泛使用,您可能会面临内存警告)。最好在收到警告时删除缓存。

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
    [[ImageCache sharedImageCache] removeAllImagesInMemory];
}

完成本指南http://akosma.com/2009/01/28/10-iphone-memory-management-tips/