iOS 高效的分页加载实现示例
今天在review代码的时候发现之前的tableview和collectview的分页加载逻辑还有优化的余地,于是进行了优化。
一、tableview的分页加载的代码对比
没有优化之前的代码如下:
[strongSelf.tableView.mj_footerendRefreshing]; [strongSelf.articleArraddObjectsFromArray:feedList]; [strongSelf.tableViewreloadData];
优化之后的代码如下:
NSMutableArray*indexPaths=[NSMutableArrayarray]; [feedListenumerateObjectsUsingBlock:^(idobj,NSUIntegeridx,BOOL*stop){ NSIndexPath*indexPath=[NSIndexPathindexPathForRow:(strongSelf.articleArr.count+idx)inSection:0]; [indexPathsaddObject:indexPath]; }]; [strongSelf.tableView.mj_footerendRefreshing]; [strongSelf.articleArraddObjectsFromArray:feedList]; [strongSelf.tableViewbeginUpdates]; [strongSelf.tableViewinsertRowsAtIndexPaths:indexPathswithRowAnimation:UITableViewRowAnimationNone]; [strongSelf.tableViewendUpdates];
二、collectonview的分页加载的代码对比
没有优化之前的代码如下:
[strongSelf.feedListaddObjectsFromArray:feedList]; if(feedList.count优化之后的代码如下:
NSMutableArray*indexPaths=[NSMutableArrayarray]; [feedListenumerateObjectsUsingBlock:^(id_Nonnullobj,NSUIntegeridx,BOOL*_Nonnullstop){ [indexPathsaddObject:[NSIndexPathindexPathForItem:(strongSelf.feedList.count+idx)inSection:0]]; }]; [strongSelf.feedListaddObjectsFromArray:feedList]; if(feedList.count总结:相比较之下,优化之后看似代码量增加了少许,但是从理论上分页加载的性能更好了。之前分页加载使用的全局刷新,优化之后改用了局部刷新。从而性能得到提升。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。