iOS TableView優化的兩個方法(優化卡頓)
阿新 • • 發佈:2019-01-30
方法二:
可以利用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