为了解决静态库的iOS限制,我将一些二进制资源(主要是一些小图像)嵌入到静态库中作为字节数组。
功能上 - 这很有效。
我的问题是 - 这种方法的缺点是什么?
具体来说,如果有人过度使用此功能并在二进制文件中嵌入大量资源 - 这会导致任何问题吗?
因为我不是100%确定iOS如何加载二进制文件/等等我不确定这些数据是否在应用程序加载时全部加载到内存中,或者是否保存在DATA部分并从中加载磁盘点播?
答案 0 :(得分:1)
这取决于你如何生成字节数组。它是PNG / JPEg数据还是原始像素?与存储JPEG / PNG数据相比,后者在存储空间和内存方面要大得多。
字节数组中的数据总是存在于内存中,可能需要再次复制才能实际加载图像,这样你就可以使用两倍的内存了从文件中加载它。
此外,您还错过了iOS用于管理图像的一些内置行为。例如,如果使用[UIImage imagedNamed:@“foo.png”]加载图像,则会缓存图像,以便下次加载更快,加载多个副本不会导致重复使用内存,并自动清除缓存如果内存不足。如果您从数据加载图像,则错过了这些功能。
传统方法是提供资源包和库,然后使用NSBundle方法从资源包中加载资源(您可以加载其他包,然后使用pathForFile:...方法就像使用mainBundle)。