首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布UIImage imageNamed

发布UIImage imageNamed
EN

Stack Overflow用户
提问于 2010-08-10 14:59:26
回答 2查看 2.4K关注 0票数 3

当我使用UIImage imagenamed时:我应该在退出前将保存UIImages的变量设置为空吗?我注意到有时当我在具有UIImages的视图之间切换时,内存会随着每次来回切换而不断增长。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-10 15:03:00

没有必要将变量设置为nil。

如果将属性声明为@property (retain),则将属性设置为nil (self.property = nil;)将释放它们。

由于+imageNamed:不是以"alloc“、"copy”、"new“或"retain”开头,所以您不必将其释放。这可能是因为不需要空间,所以东西会留在内存中。您是否看到了任何泄漏或只是内存使用情况?

票数 5
EN

Stack Overflow用户

发布于 2010-08-10 15:09:34

将UIImage变量设置为nil不会做任何特别有用的事情。此外,您不应该释放从+imageNamed:返回的图像,因为方法名并不意味着您拥有返回对象的所有权。

Cocoa维护了一个图像缓存。如果UIImage对象已经加载(因为UIImage对象是不可变的),则后续对imageNamed:的调用将返回相同的UIImage对象,否则将再次将其加载到缓存中。缓存中图像的生命周期由Cocoa决定。在内存不足的情况下,图像数据可能会被清除。即使从缓存中清除了实际的内部图像数据,您拥有的对象仍然能够引用该图像(如果图像数据是从缓存中清除的,Cocoa将重新加载该图像数据)。在整个UIImage documentation中都对此进行了解释。

如果你的内存使用量一直在增长,那么泄漏可能来自其他地方。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3446708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档