1. 程式人生 > >iOS TableView優化的兩個方法(優化卡頓)

iOS TableView優化的兩個方法(優化卡頓)

方法二:
可以利用UIScrollViewDelegate代理很好的解決這問題

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

可以識別tableview禁止或者減速滑動結束的時候進行非同步載入圖片

以下方法來執行非同步載入操作

      //獲取可見部分的物件

       NSArray *visiblePaths = [self
.tableView indexPathsForVisibleRows]; for (NSIndexPath *indexPath in visiblePaths) { //獲取的dataSource裡面的物件,並且判斷載入完成的不需要再次非同步載入 <code> }

同時在cell繪製中也做限制

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

         if
(self.tableView.dragging == NO && self.tableView.decelerating == NO) { //開始非同步載入圖片 <code> }

如果tableview 停止滑動的時候開始非同步載入圖片

最後也別忘記在記憶體緊張的情況下釋放調所有的非同步執行緒,以保證的你的app不會被系統強制關閉

- (void)didReceiveMemoryWarning{
//  釋放調非同步載入圖片的執行緒以及所有圖片資源物件
<code> }

還有千萬別忘記銷燬的時候手動把所有的使用到的代理設定nil