我正在经历this link,在那里我遇到了一个点避免UIImage的图像命名。为什么我们应该避免这个?
答案 0 :(得分:7)
它会缓存图像而不释放它,直到它收到内存警告。我不确定,但我想如果你的应用程序有很多图像(大的),它可能会导致应用程序崩溃
对我来说,我通常使用“imageWithContentsOfFile”:
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]]
答案 1 :(得分:6)
在Apple WWDC视频部分,他们说imageNamed泄露了一次..但是不再这样做。我记得看过视频了,但是不记得哪个视频部分..它是在2010 WWDC中我认为..ImageNamed仍然缓存图像。从imageNamed的文档..
此方法在系统缓存中查找具有的图像对象 指定名称并返回该对象(如果存在)。如果匹配 图像对象尚未在缓存中,此方法加载图像 来自指定文件的数据,缓存它,然后返回 结果对象。
但我认为这些缓存会在任何低内存条件发生时被清除。只是为了你的信息..我是imageNamed的狂热粉丝,我总是使用它..我从来没有任何内存问题.. < / p>
答案 2 :(得分:2)
你应该阅读文章到最后。
避免使用UIImage的imageNamed: Alex Curylo撰写了一篇关于UIImage的imageNamed:静态方法问题的绝佳文章。似乎(并且在我的测试中看来这是真的)iPhone OS(至少版本2.0和2.1)使用内部缓存来使用imageNamed:从磁盘加载的图像,并且在内存不足的情况下,此缓存不会被清除完全完全(这似乎在版本2.2中得到了纠正,但我无法确认)。
答案 3 :(得分:1)
它表示应该在SDK的2.0和2.1版本中避免使用它。它已经运作了很长时间。
看看这个question