释放不是用init创建的图像

时间:2012-07-11 14:50:42

标签: iphone objective-c ios xcode ipad

嗨,我每个人都有下一个问题,我正在创建像这样的各种图像

UIImage *image = [UIImage imageNamed:_imageName];

我正在分配给一个UIImageView

[self.imgvImage setImage:image];

用户在点击按钮时创建一个UIImageView并分配一个UIImage,我创建了4个UIImageViews,最后一个被删除发送到UIImageView这样的发布

[_imgvImage release];

但是,创造和释放一次内存交战的时间不止100次,但应用程序不会崩溃我认为这是因为创建的UIImages没有释放,因为所有代码都很干净,创建和释放都很好。

如何从内存中完全删除所有带有UIImage的UIIMageView。

请帮忙,抱歉我的英语不好。

2 个答案:

答案 0 :(得分:1)

使用以下语句创建的图像由iOS处理。此图像存储在缓存中,以便下次调用它时,只需从缓存中返回。

UIImage *image = [UIImage imageNamed:_imageName];

我认为只要您发布正在分配的内容(在本例中为UIImageView),您就不必担心内存警告。 iOS应该在内存崩溃的情况下清除此缓存。

如果您不想进行缓存(例如,当您只加载一次图像时),可以使用imageWithContentsOfFile:UIImage方法。

答案 1 :(得分:-2)

您好我找到了解决方案称为

的解决方案
NSAutoreleasePool

在我删除视图对象时的方法中:

for(ProductVW *pVW in [_vwProductsContainer subviews]){

            NSAutoreleasePool * autoreleasePool = [[NSAutoreleasePool alloc] init];

            [pVW removeFromSuperview];

            [autoreleasePool release];

}