我有以下问题:
我有一个主视图对象(继承自 UIView),它以 4x4 布局显示 16 个正方形的网格(每个都是我创建的继承自 UIImageView 的类)。
这 16 个正方形中的每一个都是 160x160,并且包含不大于 30kb 的图像(每个正方形的不同图像)。然而,图像是 500x500(因为它在程序中的其他地方使用它的完整大小),所以它在“square”类中通过 setFrame 方法调整为 160x160。
通过查看应用程序运行时 Xcode 的内存管理功能,我注意到了一些事情:
- 这些方块中的每一个,当添加到主视图对象时,都会将应用程序的内存使用量增加 1MB。这不会在实例化时发生,但只有当它们由 [self addSubview:square] 添加到主视图对象时才会发生。
- 如果我对所有正方形使用相同的图像,则内存增加是最小的。如果我在没有任何图像的情况下初始化方形对象,那么增加量基本上为零。
- 同一个应用程序在模拟器中运行时使用的内存是实际设备上的 1/6。
这里的重点是:为什么在加载 30kb 的图像时每个方块都占用 1MB 的内存?有没有办法减少这种情况?我尝试过以多种不同的方式创建图像:[UIImage imageNamed:img]
、[UIImage imageWithContentsFromFile:path]
、[UIImage imageWithData:imgData scale:scale]
,以及不调整框架的大小。