內存的使用和優化

 /*內存的使用和優化常見的有一下幾個方面數據庫

     一、重用問題:如UITableViewCell、UICollectionViewCell、UITableViewHeaderFooterViews設置正確的reuseIdentifier,充分重用數組

     二、儘可能把Views設置爲不透明:當opque爲NO的時候,圖層的半透明取決於圖片和其自己合成的圖層爲結果,可提升性能。緩存

     三、不要使用太複雜的XIB/Storyboard 載入時就會將XIB/Storyboard須要的全部資源,包括圖片所有載入內存,即便將來好久才使用,那些相比純代碼寫的延遲加載,性能及內存就差了不少。服務器

     四、選擇正確的數據結構:學會選擇對業務場景最合適的數組結構是寫出高效代碼 的基礎。好比,數組:有序的一組值。使用索引來查詢很快,使用值查詢很慢,插入/刪除很慢。字典:存儲鍵值對,用鍵來查找比較快。集合:無序的一組值,用值來查找很快,插入傷處很快。網絡

     五、gzip/zip壓縮:當從服務端下載相關附件時,能夠經過gzip/zip壓縮後再下載,使得內存更小,下載速度也更快。數據結構

     六、延遲加載:對於不該該使用的數據,使用延遲加載方式。對於不須要立刻顯示的視圖,使用延遲加載方式。好比,網絡請求失敗時顯示的提示界面,可能一直都不會使用到,所以應該使用延遲加載。性能

     七、數據緩存:對於cell的行高要緩存起來,是的reload數據時,效率也極高。而對於那些網絡數據,不須要每次都請求的,應該緩存起來,能夠寫入數據庫,也能夠經過plist文件存儲。優化

     八、處理內存警告:通常在基類統一處理內存警告,將相關不用資源當即釋放掉。orm

     九、重用大開銷對象:一些objects的初始化很慢,好比NSDateFormatter和NSCalendar,但又不可避免的須要使用它們,一般是做爲屬性存儲起來,防止反覆建立。對象

     十、避免反覆處理數據:許多應用須要從服務器加載功能所需的長爲JSon或者XML格式的數據。在服務器端和客戶端使用相同的數據結構很重要。

     十一、使用Autorelease Pool:在某些循環建立臨時變量處理數據時,自動釋放池以保證能及時釋放內存。

     十二、正確選擇圖片加載方式:

     

     */

相關文章
相關標籤/搜索