iOS 高效的分页加载

今天在review代码的时候发现之前的tableviewcollectview 的分页加载逻辑还有优化的余地,于是进行了优化。

一、tableview的分页加载的代码对比

没有优化之前的代码如下:

        [strongSelf.tableView.mj_footer endRefreshing];
        [strongSelf.articleArr addObjectsFromArray:feedList];
        [strongSelf.tableView reloadData];

优化之后的代码如下:

        NSMutableArray *indexPaths = [NSMutableArray array];
        [feedList enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
            
            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:(strongSelf.articleArr.count + idx) inSection:0];
            [indexPaths addObject:indexPath];
        }];
        
        [strongSelf.tableView.mj_footer endRefreshing];
        
        [strongSelf.articleArr addObjectsFromArray:feedList];
        
        [strongSelf.tableView beginUpdates];
        [strongSelf.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
        [strongSelf.tableView endUpdates];

二、collectonview的分页加载的代码对比

没有优化之前的代码如下:

         [strongSelf.feedList addObjectsFromArray:feedList];
        if (feedList.count < kPageSize) {
            
            [strongSelf.collectionView.mj_footer endRefreshingWithNoMoreData];
        }else{
            
            [strongSelf.collectionView.mj_footer resetNoMoreData];
        }
        [strongSelf.collectionView  reloadData];

优化之后的代码如下:

        NSMutableArray *indexPaths = [NSMutableArray array];
        [feedList enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            
            [indexPaths addObject:[NSIndexPath indexPathForItem:(strongSelf.feedList.count + idx) inSection:0]];
        }];
        
        [strongSelf.feedList addObjectsFromArray:feedList];
        if (feedList.count < kPageSize) {
            
            [strongSelf.collectionView.mj_footer endRefreshingWithNoMoreData];
        }else{
            
            [strongSelf.collectionView.mj_footer resetNoMoreData];
        }
        [strongSelf.collectionView insertItemsAtIndexPaths:indexPaths];

总结:相比较之下,优化之后看似代码量增加了少许,但是从理论上分页加载的性能更好了。之前分页加载使用的全局刷新,优化之后改用了局部刷新。从而性能得到提升。

-END-

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 时而,会看到有些简友把简书当作江湖,把自己视作江湖儿女,在此间口诛笔伐,快意恩仇,点点如涛,笔笔如刀。小小简书里有...
    晴川舒雨阅读 5,408评论 40 42
  • 狭隘龌龊虚伪卑劣恶心
    荒诞派派阅读 3,550评论 0 0
  • 简书第29篇 今天和一位教育专家交流了我在一年级开学之初一些焦虑和恐惧,她从专业的角度,给了我一些解释和建议,而我...
    玲玲筱雪阅读 2,962评论 0 0
  • 没输过的人,常常会输得一塌糊涂;没摔过跤的人,跌倒了往往爬不起来;没体会过饥寒的人,贫困注定会成为你的归宿;没历经...
    海韵荣欣阅读 1,598评论 0 0
  • 屋子里这群乌泱泱的群众除了瑟瑟发抖之外再也没换过其他动作,毫无新意! 既然没什么看头,那索性就睡觉吧,于是在这咿咿...
    青青来信了阅读 3,244评论 2 1

友情链接更多精彩内容