iOS_UITableView性能优化那些事
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/
然后推荐几个喜欢的技术博客吧:
4. http://www.cnblogs.com/dsxniubility
最后, 最近apple pay好像挺火的. 转一篇之间的文章:
http://www.cnblogs.com/easyToCode/p/5196328.html
iOS_UITableView性能优化那些事的更多相关文章
- Mysql性能优化那些事
对于全栈而言,数据库技能不可或缺,关系型数据库或者nosql,内存型数据库或者偏磁盘存储的数据库,对象存储的数据库或者图数据库--林林总总,但是第一必备技能还应该是MySQL.从LAMP的 ...
- OO_Unit2 关于性能优化与测试的那些事
OO_Unit2 关于性能优化与测试的那些事 OO的第2单元到本周也就正式完结了.尽管这个单元的主旋律是多线程,但"面向对象"的基本思想仍然是我们一切架构与优化的出发点与前提.因此 ...
- iOS app性能优化的那些事
iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对 ...
- app 性能优化的那些事
来源:树下的老男孩 链接:http://www.jianshu.com/p/5cf9ac335aec iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功 ...
- JS性能优化的那点事
1:减少查找次数,把需要查找的内容先提取出来,全部添加计算完成后,再统一查找一次即可,如下面例子: <script> window.onload = function () { var s ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译
本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官 ...
- Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
本文是Unity官方教程,性能优化系列的第二篇<Diagnosing performance problems using the Profiler window>的简单翻译. 相关文章: ...
随机推荐
- AndroidDevTools简介
AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的Android SDK.开发中用到的工具. ...
- 【FTP】在自己的电脑上建立FTP服务器
<1> 添加新用户: “计算机”点击右键 “管理”得到: 点击“本地用户和组”,点击“用户”: 右键 “新用户”: 设定用户名与密码,这是以后连FTP服务器时用的登录用户名与密码. < ...
- SQL Server - 数据库初识
在互联网笔试中,常遇到数据库的问题,遂来简单总结,注意,以 Sql Server 数据库为例. 数据库 数据库系统,Database System,由数据库和数据库管理系统组成. 数据库,Data ...
- 2016 .net 招聘
职位月薪:面议 工作地点:成都 发布日期:2016-02-23 工作性质:全职 工作经验:1-3年 最低学历:大专 招聘人数:5人 职位类别:软件工程师 岗位职责: 1. 负责项目或产品的开发.单 ...
- Android Volley框架的使用(5)
6. 设置超时时间 可以为请求设置超时时间.最大重试次数.重试时间增长因子等.其中new DefaultRetryPolicy()的第一个参数是超时时间,第二个参数是最大重试次数.第三个参数是重试时间 ...
- python问题记录
今天才python群里看到一个问题 python2.7: L = [x for x in 'hello'] print L print x python3.4: L = [ x for x in 'h ...
- Spark集群 + Akka + Kafka + Scala 开发(3) : 开发一个Akka + Spark的应用
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...
- Guava学习笔记:Guava新增集合类型-Bimap
BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构. 通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是如果出现下面一种场景的情况,我们就 ...
- LR常见问题整理
1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. LR11 无法弹出ie浏览 ...
- cssSlidy.js 响应式手机图片轮播
cssSlidy是一款支持手机移动端的焦点图轮播插件,支持标题设置,滑动动画,间隔时间等. 在线实例 实例演示 使用方法 <div id="slidy-container"& ...