1. 程式人生 > >筆記:ios效能優化(未完待續。。。)

筆記:ios效能優化(未完待續。。。)

最近在網上看了很多的記憶體優化方案,感覺都很 nice ,本文主要是對網上的記憶體優化方案做一下列表式總結,不涉及具體的內容(主要目的就是備忘):


  1. 用ARC管理記憶體(貌似現在的新專案99%用的都是ARC了)
  2. 在正確的地方使用 reuseIdentifier
  3. 儘可能使 View 不透明(View不透明的情況下 GPU在計算顏色的時候只需要計算本圖層的顏色,如果 View 透明,則需要把下 面圖層的顏色計算在內,當然會增加計算的任務量,降低效能了)
  4. 避免龐大的 XIB(在載入XIB的時候會將所有內容都放到記憶體中,大量 XIB 會導致記憶體的浪費)
  5. 不要阻塞主執行緒
  6. 在 imageView 中調整圖片大小(在執行中縮放圖片是很耗費效能的)
  7. 選擇正確的 Collection (NSArray/NSMutableArray、NSDictionary/NSMutableDictionary、NSSet/NSMutableSet)
  8. 開啟 gzip 壓縮
  9. 重用和延遲載入
  10. 快取需要快取
  11. 權衡渲染方法
  12. 處理記憶體警告(當收到記憶體警告的時候清除不是必須的快取以及一些圖片、可以重建的物件等)
  13. 重用重大開銷(比如 NSDateFormatter 和 NSCalendar。因為他們建立的很慢,可以把它們設定為屬性)
  14. 避免反覆處理資料(確保服務端和客服端使用相同的資料格式,避免資料轉換帶來的效能損耗)
  15. 選擇正確的資料格式(XML 和 JSON,JSON 通常來說更小更便於傳輸,而 XML 在處理很大的資料時,不需要像 JSON 那樣等到整個文件下載完成才開始解析,因此在處理很大的資料是會極大的減低記憶體消耗和增加效能)
  16. 正確設定背景圖片(如果用全畫幅的背景圖,用 imageView,如果是小圖平鋪建立背景用 UIColor 的 colorWithPatternImage方法)
  17. 減少使用 Web 特性
  18. 用 shadowPath 新增陰影(view.layer.shadowPath = [[UIBezierPath bezierPathWithRect:view.bounds] CGPath];)
  19. 優化TableView
  • 正確使用 reuseIdentifier 重用Cell
  • 快取行高
  • 避免圖片縮放,漸變等
  • 使用 shadowPath 來畫陰影
  • 減少 subviews 的數量
  • 正確的資料結構儲存資料
  • 儘量使用 rowHeight,sectionFooterHeight,sectionHeaderHeight 來設定行高,不要請求delegate
  • 圖文混排或者 Cell 比較複雜時用 drawRect 繪製
  • 在 tableView 快速滑動的時候只加載目標行前後可見範圍內的 Cell

 20. 選擇正確的資料儲存選項(NSUserDefaults 儲存小資料,大資料用 SQLite 和 CoreData)

 21. 正確選擇載入圖片的方法(imageWithNamed:會把圖片載入的記憶體中,imageWithContentsOfFile:則不會載入到記憶體中)


未完待續。。。