我正试图找到减少我的应用程序的内存使用量的方法,我对UIImages有了一个想法。我广泛使用UIImages,其中一些是多个视图共有的。实例化单个UIImage,然后在整个应用程序中使用指向同一图像的指针,而不是在每个视图中为同一图像分配新的UIImage,是否内存效率更高?或者,操作系统是否足够智能以自动缓存UIImage,以便它只存储在内存中一次? (怀疑是这种情况,但我不得不问)
感谢。
答案 0 :(得分:3)
直接从UIImage apple reference docs imageNamed:
此方法在系统缓存中查找具有的图像对象 指定名称并返回该对象(如果存在)。如果匹配 图像对象尚未在缓存中,此方法加载图像 来自指定文件的数据,缓存它,然后返回 结果对象。
答案 1 :(得分:1)
您使用了大量图片,因此请记住[UIImage imageNamed:@""];
缓存图片,因此如果您遇到内存不足问题,请使用不缓存它的[UIImage imageWithContentsOfFile:@""];
。也许这可以帮助你减少内存使用量。
答案 2 :(得分:0)
当视图卸载时,在viewDidUnload
子类的UIViewController
方法中将GUI属性设置为nil。
答案 3 :(得分:-1)
是的,存储单个UIImage并使用指针更有效。
操作系统不太可能以这种方式缓存图像,即使这样做,使用指针可以更好地控制图像的释放/解除分配时间,这样您就不必希望操作系统能够搞定此事。