假设我有一个应用程序将在屏幕上绘制20个小UIImageViews。假设20张扑克牌面朝下。因此,您在屏幕上拥有相同的图像20次。
假设我有两种情况:
我有一个方法不在类加载卡背纹理,应用于UIImageView并将其定位在屏幕上。此方法运行20次,因此所有卡都作为图像视图放在屏幕上。
我有一个类,一旦初始化将加载卡背景图像,应用于UIImageView并将其作为对象传递。
假设现在我想使用简单的UIImageView翻译动画20张卡片。
从内存消耗,CPU负载和运行时执行的角度来看,我提到的两种情况中的哪一种对于应用程序来说会更轻,并且消耗更少的内存?
感谢。
答案 0 :(得分:1)
根据我的理解,案例2将消耗更少的内存,但它不会有太大差异。
您能否确认在案例2中您的窗口中只有一个UIImageView?但如果是这种情况,那么使用第二种方法翻转卡片会更难。
答案 1 :(得分:1)
几乎可以肯定无所谓。真正的约束可能是视图和GPU内存,这将是相同的,因为你仍然在创建相同的20个UIImageViews。在您提及的任何类别中,您的设置成本几乎肯定都是微不足道的。而且20张图片也许没问题。确保图像的大小合理。并使用UIImage的+imageNamed:
方法加载它们,以利用框架中的缓存。
如果您想要实际确定具体的性能差异,可以使用Instruments(通过Xcode)进行配置。