美文网首页iOS开发学习
iOS性能优化——重用的艺术

iOS性能优化——重用的艺术

作者: iOS开发攻城狮 | 来源:发表于2017-04-28 16:43 被阅读66次

    前言

    本文主要是讲对UITableView以及UICollectionView的一些使用场景和注意事项,如何利用UITableViewCell和UICollectionViewCell的重用去提升APP的交互体验。

    一、问题来源

    最近在对我们的应用进行一些性能上的优化,发现其中一个图片预览界面在添加的图片数量较多时十分卡顿,于是开始查找原因,发现实现方案存在问题——没有展示在界面的图片视图也会创建,没有想到重用,每次加载时都会创建新的一个视图。

    二、具体场景及现有方案问题描述

    1.场景

    假设需要展示一些图片的缩略图,图片分为m组,每组有n张图片。

    示意图1:

    2.当前方案

    整体使用UITableView进行展示,每一个UITableViewCell展示一组图片,每个UITableViewCell内部使用UIScrollView作为容器,将一组的图片进行展示。

    其中UITableView使用了cell的重用,但是UIScrollView内每次使用时都会重新创建对应图片个数的item。

    示意图2:

    3.问题

    这种实现在图片数量较多时,每次滚动列表时,都会频繁的创建对应数量的item,不仅耗费性能,而且没有显示的item创建还会占用大量的内存。

    三、解决方案

    这种场景下可以替换UIScrollView为UICollectionView,即每个UITableViewCell中添加一个UICollectionView来展示单个小组的图片,图片数量多时,没有展示的部分图片就会利用UICollectionView的重用机制被放回到重用池,需要展示时只需要取出并刷新UI就可以了。

    这时图片增长不仅不会大量增加内存损耗,也不会因为频繁的创建而耗费内存了。

    四、部分测试数据对比

    修改前后使用xcode core animation工具在图片共4组,每组55张情况下的FPS数据:

    注:上为修改后,下为修改前。处于交互(点击、轻扫等事件触发)状态下FPS值越接近60,界面卡顿越轻微。


    上图为2017年最新的视频教程资料,搜索235再填上214最后输入9755加我好友私聊我上传视频教程,有什么不懂的也可以来私聊问我。

    不定时更新中。

    如果你能明白这些视频资料的好差,那么你也算是入行了,底层和中高层就是这一步之差。

    相关文章

      网友评论

        本文标题:iOS性能优化——重用的艺术

        本文链接:https://www.haomeiwen.com/subject/mnhazttx.html