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>的简单翻译. 相关文章: ...
随机推荐
- 【FTP】在自己的电脑上建立FTP服务器
<1> 添加新用户: “计算机”点击右键 “管理”得到: 点击“本地用户和组”,点击“用户”: 右键 “新用户”: 设定用户名与密码,这是以后连FTP服务器时用的登录用户名与密码. < ...
- 从C#到Objective-C,循序渐进学习苹果开发(5)--利用XCode来进行IOS的程序开发
本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验.前面几篇随笔主要介绍C#和O ...
- EntityFramework6.0的Sql读写分离拦截器 和 MVC的 Action拦截器 对比
EF的DbCommandInterceptor类 拦截: EF6.1也出来不少日子了,6.1相比6.0有个很大的特点就是新增了System.Data.Entity.Infrastructure.Int ...
- 理清那么多个OO(面向对象)
OOA - Object-Oriented Analysis(面向对象分析) OOT - Object-Oriented Testing (面向对象测试) OOP - Object-Oriented ...
- Angular 2 要来了,Wijmo 已准备好迎接
Angular 是一款优秀的前端JS框架,已被用于Google的多款产品中,其核心特点是:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入等.6年过去了,Angular 迎来了2.0版本. ...
- 【Java每日一题】20161125
package Nov2016; import java.util.LinkedList; import java.util.List; public class Ques1125 { public ...
- HTML标签小结
HTML:超文本标记语言 超:超链接 超文本:超出文本(可加入图片,文字,音频视频播放器) 标记:标签 HTML文档 以<html...>开始 , 以</html> ...
- 通过参数传递,判断数字、字符串、list、tuple、词典等数据类型是否为可变数据对象
list: >>> a = [1,2,3,4]>>> a[0]1>>> a[1]2>>> a[0] = 10>>&g ...
- jquery常见知识点 总结
1. jquery特点 2. jquery中css选择器用法 jQuery使用了一套css选择器,共有5种,即标签选择器,ID选择器,类选择器,通用选择器和群组选择器,现分述如下: 标签选择器 用 ...
- oracle/MySQL 中的decode的使用
MySQL decode()的等同实现 在Oracle中使用decode方法可以轻松实现代码和值之间的转换,但是在MySQL中该如何实现类似功能呢? MySQL中没有直接的方法可以使用 ...