UIImage
是否会从缓存中删除图片?我可以保留指向imageNamed:
的图像的指针,只要我愿意使用它,或者我必须总是拨打imageNamed:
吗?
答案 0 :(得分:2)
从UIImage
返回的imageNamed:
对象被视为与内存管理相同的所有其他对象。如果你想在方法调用之间保留对象的引用,那么当你完成减少引用计数时,你应该retain
和release
。
UIImage * cachedImage;
-(void) getTheImage {
UIImage * cachedImage = [[UImage imageNamed:@"MyImage.png"] retain];
//Do something with the image...
}
//In some other method or dealloc
[cachedImage release];
另请注意,UIImage class reference说:
在内存不足的情况下,图像数据 可以从UIImage对象中清除 释放系统内存。 :此 清洗行为仅影响 由内部存储的图像数据 UIImage对象而不是对象 本身。当你试图画一个 已清除数据的图像, 图像对象自动重新加载 来自其原始文件的数据。这个 然而,额外的负载步骤可能会导致 性能损失很小。
答案 1 :(得分:0)
UIImage缓存数据本身。你不能握住指针而只是传递它。这可能是不安全的,因为当存在内存警告并且没有对该对象的强引用时,UIImage将清除缓存的数据。每次调用[UIImage imageNamed:]。它很快并将ref返回到内存中的图像。如果图像不再在内存中,它将重新加载并传递参考