iOS技术iOS相关关注

iOS-UITableView的优化

2016-09-26  本文已影响490人  学_iOS

TableView的优化

一:什么是TableView的优化以及为什么要优化

1)CPU(中央处理器)和GPU(图形处理器) CPU主要从事逻辑计算的一些工作 GPU主要从事图形处理方面的工作
2)CPU和GPU的共同点:
都有自己的缓存体系 都有自己的数字和逻辑运算单元 都为了完成计算任务而设计
3)CPU和GPU的不同点:
CPU的核少但是核内空间非常大 能够处理复杂的逻辑
GPU核多但是每个核的空间相对较小 故而处理复杂逻辑的空间较少
针对CPU和GPU的上述不同,面对一个程序系统分配给CPU的往往是较为复杂的逻辑运算,分配给GPU的通常是图片等控件的操作
4)上述不同而导致的结果
当程序员为CPU编程时,倾向于用复杂的逻辑结构优化算法来减少计算任务的时间 Latency(延迟)
为GPU编程->利用其能够处理海量数据的优势,来提高总的数据的吞吐量 来掩盖Latency(延迟)
5)为什么优化
学术上:平衡CPU和GPU在工作上的压力,从而正确的使用CPU和GPU的资源,使他们均匀的负载 这样子使得FPS保持在60帧左右,最终使得用户体验更加美好
非学术上:掌握UITableView能够给面试加分

二:UITableView的工作原理

1)tablewView代理方法的执行顺序
UITableView返回多少组----->每组返回多少行cell--->计算每个cell的高度---->指定cell(cell布局)
2)cell的复用
原理:当滚动列表时(UITableView)部分cell会移除Window 但是移除的cell并没有被立即释放 而是放到了一个叫做复用池的对象池中,处于待定状态,当有新的cell要出现在Window界面上时,首先会从复用池中寻找是否有相同类型的cell,如果有直接拿过用(最直观的表现是新出现的cell有没有开辟新的内存空间),如果没有,创建一个新的类型的cell,所以UITableView可能拥有多种类型的cell,复用池也可能存储着多种类型的cell,系统通过定义reuseIndentifer作为每个cell的唯一标示符来确定即将出现的cell复用何种类型的cell

三:UITableView的具体优化

1)尽量使用cell的复用
使用cell的复用,可以减少内存的开销,没有开辟新的空间,也减少了一些计算量
2)对于不定高的cell 提前将每个cell的高度存入数组,出现一个cell的时候,直接从数组中拿出确切的高度即可,不用临时计算cell的高度
图文混排、评论
对于固定高的cell和不定高的cell同样适用
3)涉及网络请求加载数据在UITableView滑动结束的时候在进行加载数据(渲染)避免卡顿
1.UITableView继承自UIScrollView,继承了后者的方法
//滑动结束的方法

上一篇下一篇

猜你喜欢

热点阅读