5.IOS(swift)-scrollView ·重用

大部分的 iOS 开发应该都清楚 UITableView 的 cell 重用机制,这种重用机制减少了内存开销也提高了 performance,UIScrollView 作为 UITableView 的父类,在很多场景中也很适合应用重用机制(其实不只是 UIScrollView,任何场景中会反复出现的元素都应该适当地引入重用机制)。

你可以参照 UITableView 的 cell 重用机制,总结重用机制如下:

<li>维护一个重用队列
<li>当元素离开可见范围时,removeFromSuperview 并加入重用队列(enqueue)
<li>当需要加入新的元素时,先尝试从重用队列获取可重用元素(dequeue)并且从重用队列移除
<li>如果队列为空,新建元素
<li>这些一般都在 scrollViewDidScroll: 方法中完成

实际使用中,需要注意的点是:

<li>当重用对象为 view controller 时,记得 addChildeViewController
<li>当 view 或 view controller 被重用但其对应 model 发生变化的时候,需要及时清理重用前留下的内容
<li>数据可以适当做缓存,在重用的时候尝试从缓存中读取数据甚至之前的状态(如 table view 的 contentOffset),以得到更好的用户体验
<li>当 on screen 的元素数量可确定的时候,有时候可以提前 init 这些元素,不会在 scroll 过程中遇到因为 init 开销带来的卡顿(尤其是以 view controller 为重用对象的时候)

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UIScrollView (包括它的子类 UITableView和UICollectionView)是iOS开发中...
    博BlingBing阅读 2,235评论 0 7
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,211评论 30 472
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,090评论 3 38
  • 引言 : 博主目前是一名iOS开发者, 所会的语言有Objective-C 和 Swift, 目前正在学习前端, ...
    庞仕山阅读 306评论 0 0
  • 每天的生活里难免有各种尘土的接触,让我们心生烦扰,乃人生常事。 我知道生活的纷扰和权益斗争已分去我一小半的世界,不...
    会飞的鱼Nicole阅读 545评论 0 2