技巧 |
採取的措施 |
消除內存泄露 |
由於內存是iPhone OS的關鍵資源,所以您的應用程序不應該有任何的內存泄露。存在內存泄露意味着應用程序在之後可能沒有足夠的內存。您可以用Instruments程序來跟蹤代碼中的泄露,該程序既可以用於仿真器,也可以用於實際的設備。 |
使資源文件儘可能小 |
文件駐留在磁盤中,但在使用時需要載入內存。屬性列表文件和圖像文件是通過簡單的處理就可以節省空間的兩種資源類型。您可以通過 |
使用Core Data 或SQLite來處理大的數據集合 |
如果您的應用程序需要操作大量的結構化數據,請將它存儲在Core Data的持久存儲或SQLite數據庫,而不是使用扁平文件。Core Data和SQLite都提供了管理大量數據的有效方法,不需要將整個數據一次性地載入內存。 Core Data的支持是在iPhone OS 3.0系統上引入的。 |
延緩裝載資源 |
在真正需要資源文件之前,永遠不應該進行裝載。預先載入資源文件表面看好象可以節省時間,但實際上會使應用程序很快變慢。此外,如果您最終沒有用到那些資源,預先載入將只是浪費內存。 |
將程序連編爲Thumb格式 |
加入 |
減少自動釋放對象的使用 |
通過autorelease方法釋放的對象會留在內存中,直到顯式清理自動釋放池或者程序再次回到事件循環。在任何可能的時候,請避免使用autorelease方法,而是通過release方法立即收回對象佔用的空間。如果您必須創建一定數量的自動釋放對象,則請創建局部的自動釋放池,以便在返回事件循環之前定期對其進行清理,回收那些對象的內存。 |
爲資源設置尺寸限制 |
避免裝載大的資源文件,如果有更小的文件可用的話。請用適合於iPhone OS設備的恰當尺寸圖像來代替高清晰度的圖像。如果您必須使用大的資源文件,需要考慮僅裝載當前需要的部分。舉例來說,您可以通過mmap和munmap函數來將文件的一部分載入內存或從內存卸載,而不是操作整個文件。 |
避免無邊界的問題集 |
無邊界的問題集可能需要計算任意大量的數據。如果該集合需要的內存比當前系統能提供的還要多,則您的應用程序可能無法進行計算。您的應用程序應該儘可能避免處理這樣的集合,而將它們轉化爲內存使用極限已知的問題。 |
ios內存優化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.