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

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

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

相关文章

  • iOS QQ第三方登录实现

    iOS QQ第三方登录实现

    这篇文章主要介绍了iOS QQ第三方登录实现的全过程,一步一步告诉大家iOS QQ实现第三方登录的方法,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • UITextView实现只允许链接交互不允许选择图片的方法

    UITextView实现只允许链接交互不允许选择图片的方法

    这篇文章主要介绍了UITextView实现只允许链接交互不允许选择图片的方法,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • iOS实现两个控制器之间数据的双向传递

    iOS实现两个控制器之间数据的双向传递

    这篇文章主要为大家详细介绍了iOS实现两个控制器之间数据的双向传递的相关资料,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • iOS阅读器与直播的控件重叠滑动交互详解

    iOS阅读器与直播的控件重叠滑动交互详解

    这篇文章主要介绍了iOS阅读器与直播的控件发生重叠时滑动交互受到影响的问题,开发中某个控件出现在其它控件上方是和你常见的情况,但是如果影响到正常的交互这就会成为大问题,下面我们来了解一下
    2022-08-08
  • 查看iOS已上架App的Crash信息定位、应对处理方式的实例

    查看iOS已上架App的Crash信息定位、应对处理方式的实例

    下面小编就为大家带来一篇查看iOS已上架App的Crash信息定位、应对处理方式的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • iOS实现列表与网格两种视图的相互切换

    iOS实现列表与网格两种视图的相互切换

    相信大家应该也都发现了,在现在很多的电商app中,都会有列表视图和网格两种视图的相互切换。例如京东和淘宝。这样更利于提高用户的体验度,所以这篇文章小编就是大家分享下利用iOS实现列表与网格两种视图相互切换的方法,文中介绍的很详细,感兴趣的下面来一起看看吧。
    2016-10-10
  • iOS中长按调出菜单组件UIMenuController的使用实例

    iOS中长按调出菜单组件UIMenuController的使用实例

    UIMenuController即是用来制作我们平时对文本长按屏幕后显示出的复制粘贴等选项菜单,下面就来详细整理一下iOS中长按调出菜单组件UIMenuController的使用实例:
    2016-06-06
  • 详解iOS应用的设计模式开发中Mediator中介者模式的使用

    详解iOS应用的设计模式开发中Mediator中介者模式的使用

    这篇文章主要介绍了iOS应用的设计模式开发中Mediator中介者模式的使用,示例代码为传统的Objective-C语言,需要的朋友可以参考下
    2016-03-03
  • ios多种语言的本地化思路

    ios多种语言的本地化思路

    ios程序实现多种语言的本地化办法,最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享!
    2015-05-05
  • IOS App图标和启动画面尺寸详细介绍

    IOS App图标和启动画面尺寸详细介绍

    这篇文章主要介绍了IOS App图标和启动画面尺寸详细介绍的相关资料,需要的朋友可以参考下
    2017-02-02

最新评论