UITableView在实际开发中使用频率实在是很高, 因此, UITableView的性能优化是必不可少的, 本文下面就略微总结一下UITableView性能优化那些事.

本文着重介绍具体方法, 原理的话在文章最后会给出一些链接, 有兴趣可以自行查看.

1. 关于数据绑定

很多新加入iOS的朋友喜欢把数据绑定写入在UITableView Data Source方法

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath

里面. 这并不是十分之准确的, 因为这时候的cell还没有被实际产生, 试着把数据绑定写在

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;

这个方法上, 因为这时候cell已经被创建而且正在准备显示到界面上了.

2. 关于cell的重用.

cell的重用是苹果官方就一再推荐的, 所以保证自己创建的cell是重用的会对性能提升有很大的帮助.

3. 关于高度计算

高度计算的方法如果调用多次, 对性能损耗是肯定的. 当然如果你的高度是定死的话, 就不会出现这个问题. 如果不是的话, 那么你可能需要自己设计一个方法, 把每个需要显示的cell的高度先计算出来, 然后再设置cell高度的时候直接调用.

提供一个计算cell内容高度的方法(截取网上的):

然后高度设置可以在下面实现:

4. 关于AutoLayout

尽管苹果官方推荐使用autoLayout进行程序开发, 但是autoLayout会带来性能的一些损耗, 当然, 如果你的程序对性能要求不是很高的话, 用autoLayout进行开发也是很方便的.

5. 关于CPU和GPU的调度使用

各种透明度, 圆角等layer的属性都会引起性能损耗.

所以, 可以试着不要直接设置图片的圆角, 先异步获取图片, 调用CoreGraphics 处理好图片再返回

这样你的图片处理就交给了后台而不会影响到你程序的流畅性了

6. 关于其他优化方法

可以试着使用这个 https://github.com/facebook/AsyncDisplayKit 框架, 框架集成了大量异步操作, 把UIView -> CALayer 转变成 CAlayer -> Node, 这样的轻量级控件加上异步操作, 会使你的程序性能更上一层楼.

附上一些链接:

1. http://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/

2. http://southpeak.github.io/blog/2015/12/20/perfect-smooth-scrolling-in-uitableviews/

然后推荐几个喜欢的技术博客吧:

1. http://blog.ibireme.com

2. http://www.superqq.com

3. http://southpeak.github.io

4. http://www.cnblogs.com/dsxniubility

最后, 最近apple pay好像挺火的. 转一篇之间的文章:

http://www.cnblogs.com/easyToCode/p/5196328.html

iOS_UITableView性能优化那些事的更多相关文章

  1. Mysql性能优化那些事

    ​    ​对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库--林林总总,但是第一必备技能还应该是MySQL.从LAMP的 ...

  2. OO_Unit2 关于性能优化与测试的那些事

    OO_Unit2 关于性能优化与测试的那些事 OO的第2单元到本周也就正式完结了.尽管这个单元的主旋律是多线程,但"面向对象"的基本思想仍然是我们一切架构与优化的出发点与前提.因此 ...

  3. iOS app性能优化的那些事

     iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对 ...

  4. app 性能优化的那些事

    来源:树下的老男孩 链接:http://www.jianshu.com/p/5cf9ac335aec iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功 ...

  5. JS性能优化的那点事

    1:减少查找次数,把需要查找的内容先提取出来,全部添加计算完成后,再统一查找一次即可,如下面例子: <script> window.onload = function () { var s ...

  6. C#中那些[举手之劳]的性能优化

    隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...

  7. C++ 应用程序性能优化

    C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...

  8. Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译

    本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...

  9. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译

    本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: ...

随机推荐

  1. 使用WebKit.net加载HTML编辑器

    关于webkit.net使用请看这里http://www.cnblogs.com/linyijia/p/4045333.html nicedit编辑器请到这里下载http://www.nicedit. ...

  2. jQuery Ajax实现下拉框无刷新联动

    HTML代码: @{ Layout = null; } @using DAL; @using System.Data; @{ AreaDal areaDal = new AreaDal(); stri ...

  3. jquery时间轴幻灯展示源代码

    查看效果:http://hovertree.com/texiao/jquery/75/ 源代码下载:http://hovertree.com/h/bjaf/8jlpc2wu.htm 效果图如下: 代码 ...

  4. Android Volley框架的使用(5)

    6. 设置超时时间 可以为请求设置超时时间.最大重试次数.重试时间增长因子等.其中new DefaultRetryPolicy()的第一个参数是超时时间,第二个参数是最大重试次数.第三个参数是重试时间 ...

  5. ==与equals()

    java中的比较有很多种 1.== 2.equals() 3.< 或 >或 != 4.instanceof 5.compareTo 1.什么时候用"==" 什么时候用& ...

  6. php 设置mssql编码 解决乱码问题 mssql_connect charset Utf8

    当用mssql存储数据采用 nchar 或 nvarchar  存储时 , 由于nchar 或 nvarcha 不支持 UCS-2 ( 即 SQLServer 不会按照 UTF-8 格式存储) 导致P ...

  7. SpringFramework的简介

    一.前言 Spring提供了一种轻量级的解决方案,用于建立"快装式企业应用".在此基础上,Spring还提供了包括声明式事务管理,RMI或Web Services远程访问业务逻辑, ...

  8. 《深入.NET平台和C#编程》内部测试题

    一 选择题 1)      以下关于序列化和反序列化的描述错误的是( C). a)      序列化是将对象的状态存储到特定存储介质中的过程 b)      二进制格式化器的Serialize()和D ...

  9. [AngularJS] 使用AngularAMD动态加载Service

    [AngularJS] 使用AngularAMD动态加载Service 前言 「使用AngularAMD动态加载Controller」:这篇文章里介绍如何使用AngularAMD来动态加载Contro ...

  10. AE常见接口之间的关系(较笼统)+arcgis常见概念

    常见的接口有如下关系 IworkspaceFactory-------------->IworkSpace------------------>IfeatureWorkSpace ---- ...