这是UIImage的有效使用吗?

时间:2009-09-30 16:49:29

标签: iphone memory uiimage

假设我有一个名为Person的对象。 人在内部加载了一个名为“person.png”的UIImage。

在我的应用程序中,我创建了许多Person对象,在运行时创建甚至删除它们。

由于Person对象内部有对UIImage的保留引用,这是否意味着每个Person都有一个唯一的图像内存分配?

或者所有Person对象是否指向图像的相同内存位置?

2 个答案:

答案 0 :(得分:2)

嗯,这取决于你如何获得UIImage。

每次创建新的Person对象时,您是否正在使用+ [UIImage imageNamed:]?如果是这样,UIKit将缓存图像并将引用返回到内存中的单个副本。保留它以确保它保持加载状态,然后在完成引用后释放它,但在内存中只创建一个UIImage对象。

另一方面,如果你正在调用+ [UIImage initWithData:]或[[UIImage alloc] initWithContentsOfFile:]你每次都在内存中创建一个新副本(你可能需要停止:)

答案 1 :(得分:1)

如果您的Person实例使用retain来引用UIImage实例,那么它将指向内存中某个图像的一个实例。

如果您使用copy代替retain,则您将拥有UIImage的唯一实例。

考虑查看memory management上的Apple参考资料。