iOS 高效的分页加载实现示例

 更新时间:2017年10月17日 11:12:23   作者:蓝光95  
本篇文章主要介绍了iOS 高效的分页加载实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

一、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];

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Objective-C实现身份证验证的方法示例

    Objective-C实现身份证验证的方法示例

    这篇文章主要给大家分享了Objective-C实现身份证验证的方法,文中给出了详细的示例代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • iOS实现折叠单元格

    iOS实现折叠单元格

    这篇文章主要为大家详细介绍了iOS实现折叠单元格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • iOS实现微信/QQ显示最近拍摄图片的功能实例代码

    iOS实现微信/QQ显示最近拍摄图片的功能实例代码

    如果你刚刚拍摄了图片,在使用微信/QQ发生消息时会显示“你可能要发送的图片”,这个功能非常人性化,怎么实现的呢?下面小编给大家分享iOS实现微信/QQ显示最近拍摄图片的功能实例代码,一起看看吧
    2017-03-03
  • 浅谈IOS屏幕刷新ADisplayLink

    浅谈IOS屏幕刷新ADisplayLink

    CADisplayLink是一个能让我们以和屏幕刷新率相同的频率将内容画到屏幕上的定时器。本文将介绍它的使用,感兴趣的同学,可以参考下。
    2021-06-06
  • Xcode8打印一堆log问题的快速解决方法

    Xcode8打印一堆log问题的快速解决方法

    刚装的xcode8,不知道从哪来的一堆log,很奇怪。怎么解决此问题呢?下面小编给大家分享本教程帮助大家了解Xcode8打印一堆log问题的快速解决方法,感兴趣的朋友跟着小编一起学习吧
    2016-10-10
  • IOS  手势操作详解及实例总结篇

    IOS 手势操作详解及实例总结篇

    这篇文章主要介绍了IOS 手势操作详解及实例总结篇的相关资料,需要的朋友可以参考下
    2017-01-01
  • iOS App开发中UITextField组件的常用属性小结

    iOS App开发中UITextField组件的常用属性小结

    这篇文章主要介绍了iOS App开发中UITextField组件的常用属性小结,文中还介绍了UITextField隐藏键盘及为内容增加校验的两个使用技巧,需要的朋友可以参考下
    2016-04-04
  • iOS实现二维码的扫描功能

    iOS实现二维码的扫描功能

    本文给大家介绍的是iOS 原生态API实现二维码的扫描功能,非常简单实用,有需要的小伙伴可以参考下。
    2015-07-07
  • IOS开发中加载大量网络图片优化方法

    IOS开发中加载大量网络图片优化方法

    这篇文章主要介绍了IOS开发中加载大量网络图片如何优化的相关资料,需要的朋友可以参考下
    2017-03-03
  • 解决Charles抓包https时,无法查看CONNECT请求的问题

    解决Charles抓包https时,无法查看CONNECT请求的问题

    下面小编就为大家分享一篇解决Charles抓包https时,无法查看CONNECT请求的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01

最新评论