将二进制资源嵌入字节数组的缺点是什么?

时间:2012-02-02 15:14:04

标签: ios binary

为了解决静态库的iOS限制,我将一些二进制资源(主要是一些小图像)嵌入到静态库中作为字节数组。

功能上 - 这很有效。

我的问题是 - 这种方法的缺点是什么?

具体来说,如果有人过度使用此功能并在二进制文件中嵌入大量资源 - 这会导致任何问题吗?

因为我不是100%确定iOS如何加载二进制文件/等等我不确定这些数据是否在应用程序加载时全部加载到内存中,或者是否保存在DATA部分并从中加载磁盘点播?

1 个答案:

答案 0 :(得分:1)

这取决于你如何生成字节数组。它是PNG / JPEg数据还是原始像素?与存储JPEG / PNG数据相比,后者在存储空间和内存方面要大得多。

字节数组中的数据总是存在于内存中,可能需要再次复制才能实际加载图像,这样你就可以使用两倍的内存了从文件中加载它。

此外,您还错过了iOS用于管理图像的一些内置行为。例如,如果使用[UIImage imagedNamed:@“foo.png”]加载图像,则会缓存图像,以便下次加载更快,加载多个副本不会导致重复使用内存,并自动清除缓存如果内存不足。如果您从数据加载图像,则错过了这些功能。

传统方法是提供资源包和库,然后使用NSBundle方法从资源包中加载资源(您可以加载其他包,然后使用pathForFile:...方法就像使用mainBundle)。