重用問題:
如UITableViewCells、UICollectionViewCells、UITableViewHeaderFooterViews
設置正確的reuseIdentifier,充分重用;
盡量把views設置為不透明:
當opque為NO的時候,圖層的半透明取決于圖片和其本身合成的圖層為結果,可提高性能;
不要使用太復雜的XIB/Storyboard:
載入時就會將XIB/storyboard需要的所有資源,
包括圖片全部載入內存,即使未來很久才會使用。
那些相比純代碼寫的延遲加載,性能及內存就差了很多;
選擇正確的數據結構:
學會選擇對業務場景最合適的數組結構是寫出高效代碼的基礎。
比如,數組: 有序的一組值。
使用索引來查詢很快,使用值查詢很慢,插入/刪除很慢。
字典: 存儲鍵值對,用鍵來查找比較快。
集合: 無序的一組值,用值來查找很快,插入/刪除很快。
gzip/zip壓縮:
當從服務端下載相關附件時,可以通過gzip/zip壓縮后再下載,使得內存更小,下載速度也更快。
延遲加載:
對于不應該使用的數據,使用延遲加載方式。
對于不需要馬上顯示的視圖,使用延遲加載方式。
比如,網絡請求失敗時顯示的提示界面,可能一直都不會使用到,因此應該使用延遲加載。
數據緩存:
對于cell的行高要緩存起來,使得reload數據時,效率也極高。
而對于那些網絡數據,不需要每次都請求的,應該緩存起來,
可以寫入數據庫,也可以通過plist文件存儲。
處理內存警告:
一般在基類統一處理內存警告,將相關不用資源立即釋放掉
重用大開銷對象:
一些objects的初始化很慢,
比如NSDateFormatter和NSCalendar,但又不可避免地需要使用它們。
通常是作為屬性存儲起來,防止反復創建。
避免反復處理數據:
許多應用需要從服務器加載功能所需的常為JSON或者XML格式的數據。
在服務器端和客戶端使用相同的數據結構很重要;
使用Autorelease Pool:
在某些循環創建臨時變量處理數據時,自動釋放池以保證能及時釋放內存;
正確選擇圖片加載方式:詳情閱讀細讀UIImage加載方式