浅谈TableView的优化

UITableView是iOS开发中使用最频繁的控件之一, 所以关于UITableView的优化问题也是经常要去面对的一个问题.

一. 首先是性能优化.

主要的两个优化方式:
a.
保证UITableViewCell正确设置了reuseIdentifier, 如果相同的cell未进行重用, 那么每显示一行cell就会创建一个全新的cell, 这对性能的影响是相当大的.

b.
保证heightForRowAtIndex: 方法中除了计算cell高度以外没有其他无关操作, 一定要缓存行高, 因为这个方法调用非常的频繁, 重复不必要的操作和计算会损耗性能.

二. 关于子视图的优化:

a.
保证所有的子视图都指定了背景颜色, 很多程序员在开发中都会遇到的一个情况就是在两个控制器之间跳转时, 如果目标控制器没有设置背景颜色, 就会出现卡顿的现象, 但其实cell也是一样的, 如果子控件没有指定背景颜色, 会影响TableView滚动的流畅度.
b.
保证不透明视图的opaque属性都是YES,因为系统在渲染视图的时候如果发现opaque属性的值是YES, 那么就会优化一些渲染的过程, 提高性能. 所以尽量少用或不用透明图层可以极大的提高渲染速度.
c.
保证UIImageView中显示的图片大小跟UIImageView的大小相同, 因为在运行中缩放图片是以个会耗费资源的操作. 如果图片是从远端服务器加载是不能控制图片大小的, 需要下载完成后马上在子线程中执行缩放的操作.

关于异步操作的优化:

d.
如果cell中的内容来自网络或者远端服务器, 一定要保证是异步加载, 并缓存请求到的结果. 避免阻塞和数据的重复请求.
e.
图形界面的绘制尽量转到异步操作, 这样可以避免图片的绘制会打断用户交互了

三. 关于XIB文件优化:

f.
如果是复杂且需要高效的界面, 尽量将SB和XIB创建的界面改为代码创建, 减轻系统需要进行XML转码操作的负担.

四. 是内存优化.

a.
尽量保证一个XIB文件中只有一个视图, 因为加载一个XIB的时候, 所有的内容都被放在内存里, 包括图片素材, 如果有一个不会即刻用到的视图, 那么就是在浪费我们宝贵的内存了, 并且过于庞大的XIB会延长app的启动时间, 所以没有必要的话, 最好在SB中创建视图.

b.
一定要处理内存警告, 在收到内存警告后,否则就可能会因为内存占用过高出现闪退.

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

相关阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,401评论 30 472
  • 视图控制对象通过alloc和init来创建,但是视图控制对象不会在创建的那一刻就马上创建相应的视图,而是等到需要使...
    Coder_JMicheal阅读 3,437评论 0 2
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,646评论 4 61
  • 当我们开发iOS应用时,好的性能对我们的App来说是很重要的。你的用户也希望如此,但是如果你的app表现的反应迟钝...
    iOS开发攻城狮阅读 5,416评论 0 14
  • 在残酷的现实面前,相比于钞票,职位,房子,车子这样有实质安全感的实物外,爱似乎有那么一点廉价,而爱又那么虚幻,所以...
    心眸阅读 2,118评论 0 0

友情链接更多精彩内容