我有以下问题:普尔存储器管理性能为图像上IOS设备
我有一个主视图对象(即从UIView的继承),其显示的16个正方形的栅格(每个是我创建的继承的类从UIImageView),在4x4布局。
这16个方格中的每一个都是160x160,并且包含一个不大于30kb的图像(每个方格的图像不同)。然而,该图像是500x500(因为它在程序中的其他地方以其全尺寸使用),所以它通过setFrame方法在“方形”类中被调整为160x160。
通过查看应用程序运行时的Xcode的内存管理功能,我注意到几件事情:
- 每一个方块,当添加到主视图对象,增加了内存使用情况的应用程序1MB。这不会在实例化时发生,但只有在主视图对象的[self addSubview:square]添加时才会发生。
- 如果我对所有的方块使用相同的图像,则内存增加最小为 。如果我初始化没有任何图像的方形对象,那么 的增加基本为零。
- 相同的应用程序,当在模拟器中运行时,使用它在实际设备上执行的内存的1/6的 。
这里的要点是:为什么每个加载30kb图像时使用1MB的内存?有没有办法减少这种情况?我试过用多种不同的方式创建图像:[UIImage imageNamed:img]
,[UIImage imageWithContentsFromFile:path]
,[UIImage imageWithData:imgData scale:scale]
,以及不调整帧大小。
感谢您的快速回答和建议。我最终发现罪魁祸首是启动UIImageView并告诉它调整大小,现在我只是在实例化UIImageView之前动态调整它们的大小,使用UIGraphicsBeginImageContext,调整大小,从当前上下文设置新图像然后是UIGraphicsEndImageContext。这本身就会从1MB /图像降低到150k /图像,或多或少。尽管如此,我还是试试看,看看我能否将内存使用率降到更低。再次,感谢一百万。 – user2491253
这正是我所建议的,即大小图像第一。听起来就像你自己想的那样。做得好!!! – Rob