iOS_UITableView效能最佳化那點事,ios_uitableview
UITableView在實際開發中使用頻率實在是很高, 因此, UITableView的效能最佳化是必不可少的, 本文下面就略微總結一下UITableView效能最佳化那點事.
本文著重介紹具體方法, 原理的話在文章最後會給出一些連結, 有興趣可以自行查看.
1. 關於資料繫結
很多新加入iOS的朋友喜歡把資料繫結寫入在UITableView Data Source方法
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
裡面. 這並不是十分之準確的, 因為這時候的cell還沒有被實際產生, 試著把資料繫結寫在
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
這個方法上, 因為這時候cell已經被建立而且正在準備顯示到介面上了.
2. 關於cell的重用.
cell的重用是蘋果官方就一再推薦的, 所以保證自己建立的cell是重用的會對效能提升有很大的協助.
3. 關於高度計算
高度計算的方法如果調用多次, 對效能損耗是肯定的. 當然如果你的高度是定死的話, 就不會出現這個問題. 如果不是的話, 那麼你可能需要自己設計一個方法, 把每個需要顯示的cell的高度先計算出來, 然後再設定cell高度的時候直接調用.
提供一個計算cell內容高度的方法(截取網上的):
然後高度設定可以在下面實現:
4. 關於AutoLayout
儘管蘋果官方推薦使用autoLayout進行程式開發, 但是autoLayout會帶來效能的一些損耗, 當然, 如果你的程式對效能要求不是很高的話, 用autoLayout進行開發也是很方便的.
5. 關於CPU和GPU的調度使用
各種透明度, 圓角等layer的屬性都會引起效能損耗.
所以, 可以試著不要直接設定圖片的圓角, 先非同步擷取圖片, 調用CoreGraphics 處理好圖片再返回
這樣你的圖片處理就交給了後台而不會影響到你程式的流暢性了
6. 關於其他最佳化方法
可以試著使用這個 https://github.com/facebook/AsyncDisplayKit 架構, 框架組成了大量非同步作業, 把UIView -> CALayer 轉變成 CAlayer -> Node, 這樣的輕量級控制項加上非同步作業, 會使你的程式效能更上一層樓.
附上一些連結:
1. http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/
2. http://southpeak.github.io/blog/2015/12/20/perfect-smooth-scrolling-in-uitableviews/
然後推薦幾個喜歡的技術部落格吧:
1. http://blog.ibireme.com
2. http://www.superqq.com
3. http://southpeak.github.io
4. http://www.cnblogs.com/dsxniubility
最後, 最近apple pay好像挺火的. 轉一篇之間的文章:
http://www.cnblogs.com/easyToCode/p/5196328.html