2012-02-02 50 views
0

解決iOS靜態庫的限制我將一些二進制資源(主要是一些小圖像)作爲字節數組嵌入到靜態庫中。將二進制資源嵌入爲字節數組的缺點?

功能上 - 這效果很好。

我的問題是 - 這種方法有什麼缺點?

具體來說,如果有人因此而過度使用,並在二進制文件中嵌入大量資源 - 會造成任何問題嗎?

因爲我不是100%確定iOS加載二進制文件/ etc的方式我不確定這些數據是否在加載應用程序時全部加載到內存中,或者它是否保存在DATA部分並加載從磁盤需求?

回答

1

這取決於你如何生成字節數組。它是PNG/JPEg數據還是原始像素?與存儲JPEG/PNG數據相比,後者在存儲空間和內存方面要大得多。

而且字節數組中的數據是總是會在內存中,並且可能需要再次複製才能真正加載圖像,因此您使用的內存是存儲的兩倍,就像加載它一樣從一個文件。

此外,您錯過了iOS用於管理圖像的一些內置行爲。例如,如果您使用[UIImage imagedNamed:@「foo.png」]加載圖像,圖像將被緩存,因此下次加載時會更快,並且加載多個副本不會導致內存使用重複,並且緩存會自動清除如果內存不足。如果你從數據加載圖像,你錯過了這些功能。

傳統方法是提供一個資源包以及您的庫,然後使用NSBundle方法從資源包中加載資源(您可以加載其他包,然後使用pathForFile:...方法就像使用mainBundle)。

+0

非常好。謝謝。 – Steve 2012-02-02 16:34:25

相關問題