0

大家好,我有下一个问题,我正在创建这样的各种图像

UIImage *image = [UIImage imageNamed:_imageName];

我分配给一个 UIImageView

[self.imgvImage setImage:image];

用户点击一个按钮时会创建一个 UIImageView 并分配一个 UIImage,我在创建新的时创建了 4 个 UIImageView,最后一个被删除,像这样向 UIImageView 发送版本

[_imgvImage release];

但是发生了大约 100 次创建和释放内存冲突,但应用程序不会崩溃,我认为这是因为创建的 UIImages 没有释放,因为所有代码都是干净的,创建和释放都很好。

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

请帮忙,对不起我的英语不好。

4

2 回答 2

1

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

UIImage *image = [UIImage imageNamed:_imageName];

我认为只要您释放分配的内容(在这种情况下为 UIImageView),您就不必担心内存警告。iOS 应在内存紧缩的情况下清除此缓存。

如果你不想要这种缓存(例如,当你只加载一个图像时)你可以使用 imageWithContentsOfFile: UIImage 的方法。

于 2012-07-11T14:57:11.320 回答
-2

嗨,我找到了解决方案,该解决方案称为

NSAutoreleasePool

在我删除视图对象时的方法中,如下所示:

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

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

            [pVW removeFromSuperview];

            [autoreleasePool release];

}
于 2012-07-11T15:32:23.230 回答