美文网首页
tableView的优化 、cell高度优化、内存优化

tableView的优化 、cell高度优化、内存优化

作者: 骑着毛驴走起来 | 来源:发表于2018-03-21 21:47 被阅读57次

一、tableView的优化

1、iOS平台因为UIKit本身的特性,需要将所有的UI操作都放在主线程执行,所以有时候就习惯将一些线程安全性不确定的逻辑,以及它线程结束后的汇总工作等等放到了主线程,所以主线程包含大量计算、IO、绘制都有可能造成卡顿。

2、设置正确的  reuseIdentifer  以重用 cell。

3、使用 shadowPath 来设置阴影,图层最好不要使用阴影,阴影会导致离屏渲染(在进入屏幕渲染之前,还看不到的时候会再渲染一次,尽量不要产生离屏渲染)。

4、减少 subview 的数量,不要去添加或移除view,要就显示,不要就隐藏。

5、在 cellForRowAtIndexPath 中尽量做更少的操作,最好是在别的地方算好,这个方法里只做数据的显示,如果需要做一些处理,那么最好做一次之后将结果储存起来。

6、读取文件,写入文件,最好是放到子线程,或先读取好,在让tableView去显示。

7、tableView滚动的时候,不要去做动画(微信的聊天界面做的就很好,在滚动的时候,动态图就不让他动,滚动停止的时候才动,不然可能会有点影响流畅度)。在滚动的时候加载图片,停止拖拽后在减速过程中不加载图片,减速停止后加载可见范围内图片。

二、tableViewCell高度优化

1、 一种是针对所有 Cell 具有固定高度的情况,通过:self.tableView.rowHeight = 88; 指定了一个所有 cell 都是 88 高度的 UITableView,对于定高需求的表格,强烈建议使用这种(而非下面的)方式保证不必要的高度计算和调用。

2、另一种方式就是实现 UITableViewDelegate 中的:heightForRowAtIndexPath:需要注意的是,实现了这个方法后,rowHeight 的设置将无效。所以,这个方法适用于具有多种 cell 高度的 UITableView。

三、内存的优化和注意事项(使用Instrument工具的CoreAnimation、GPU Driver、I/O操作,检查fps数值)

1、重用问题:比如UITableViewCell、UICollectionViewCell、UITableViewHeaderFooterViews等设置正确的reuseIdentifier,充分重用。

2、懒加载控件、页面:对于不是立刻使用的数据,都应该使用延迟加载的方式,比如网络连接失败的提示界面,可能一直都用不到。

3、不要使用太多的xib/storyboard:载入时会将其内部的图片在内的所有资源载入内存,即使未来很久才会需要使用,相对于纯代码写的延迟加载,在性能和内存上就差了很多。

4、数据缓存:对于cell的行高要缓存起来,使用reloadData效率也极高,对于网络数据,不需要每次都请求的,应该缓存起来,可以写入数据库,也可以通过plist文件存储。

5、选择正确的数据结构:针对不同的业务场景选择最合适的数据结构是写出高效代码的基础。(1)数组:有序的一组值,使用索引查询起来很快,使用值查询的很慢,插入/删除 很慢 ;(2)字典:存储键值对对,用键查找比较快;(3)集合:无序的一组值,用值来查找很快,插入/删除很快。

6、重大开销对象:一些objects的初始化很慢,比如NSDateFormatter和 NSCalendar,但是又无可避免的需要使用,通常作为属性存储起来,避免反复使用。

7、避免反复处理数据:需要应用需要从服务器加载数据,常为JSON或者XML格式的数据,在服务器端或者客户端使用相同的数据结构很重要。

相关文章

网友评论

      本文标题:tableView的优化 、cell高度优化、内存优化

      本文链接:https://www.haomeiwen.com/subject/mkkraxtx.html