当我使用UIImage imagenamed时:我应该设置在退出前将UIImage保存为零的变量吗?我注意到,有时当我在具有UIImages的视图之间切换时,内存不断增长并随着每个开关的来回而增长。正在释放UIImage imageNamed
3
A
回答
5
将变量设置为零是没有必要的。
将属性设置为零(self.property = nil;
)会在它们宣布为@property (retain)
时发布。
由于+imageNamed:
不以“alloc”,“copy”,“new”或“retain”开头,因此您不必释放它。由于不需要空间,因此可能会留下记忆。你看到任何泄漏或只是内存使用情况?
3
将UIImage变量设置为nil
不会做任何特别有用的操作。此外,您不应该释放从+imageNamed:
返回的图像,因为方法名称并不意味着您拥有返回对象的所有权。
Cocoa维护一个图像缓存。如果它已经加载(因为UIImage
对象是不可变的),后续对imageNamed:
的调用将返回相同的UIImage
对象,否则它将再次将其加载到缓存中。缓存中图像的生命周期由Cocoa决定。在低内存情况下,图像数据可能被清除。即使实际内部图像数据从缓存中清除,您拥有的对象仍然可以引用图像(如果从缓存中清除了Cocoa,它将重新加载图像数据)。这是在整个UIImage
documentation解释。
如果您的内存使用量持续增长,那么泄漏可能来自其他地方。
相关问题
- 1. UIImage imageNamed
- 2. UIImage + NSCache与[UIImage imageNamed:]
- 3. UIImage imageNamed扩展
- 4. UIImage ImageNamed方法
- 5. UIImage释放问题
- 6. 的UIImage Imagenamed问题
- 7. 当使用+ imageNamed创建的uiimage在dealloc中释放时,应用程序崩溃
- 8. UIImage imageNamed第二次给EXC_BAD_ACCESS
- 9. uiimage和uibutton释放问题?
- 10. 正确释放返回的UIImage
- 11. iOS - UIImage imageNamed:在设备上返回null
- 12. 使用后释放UIImage
- 13. UIImage imageNamed返回错误图像
- 14. UIImage imagenamed:以CIImage不一致的结果
- 15. 的UIImage imageNamed不上IOS工作5.0
- 16. iOS7/iOS8中[UIImage imageNamed]的性能问题
- 17. 检查+ [UIImage imageNamed:]是否发现图像
- 18. 避免UIImage的imageNamed - 内存管理
- 19. UIImage imageNamed没有正确地自动解除
- 20. UIImage释放错误 - *** - [UIImage发布]:发送到释放实例的消息
- 21. 与imageNamed
- 22. 在UIScrollView中缩放UIImage
- 23. (iPhone)在UIImage中使用外部图像imageNamed
- 24. 在试图使用UIImage设置cell.image时出现障碍:imageNamed:
- 25. 正在释放用C
- 26. 将uiimage设置为零不会释放内存与ARC
- 27. img_data_lock iphone - imageNamed vs imageWithContentsofFile
- 28. 覆盖UIImage imageNamed - 我的选择是什么?
- 29. JPG图像不与UIImage一起加载imageNamed
- 30. 性能问题使用UIImage渲染图像imageNamed方法
我开始在〜340MB(没有程序打开)。如果我来回切换视图,我的内存每个交换机下降约9MB。每隔一段时间它就会恢复大约5MB,但是我把它减少到了190MB,并且一无所有。 – Derek 2010-08-10 07:14:40