1、Cell 的复用机制
2、子线程加载延时操作,主线程更新即可
3、IO操作(延时操作),读取文件和写入文件,最好在cell显示之前将文件读取到内存(如程序加载时即读取)
4、缓存 cell 的行高(因为如果根据 cell 的约束确定行高,每当显示之前都需要计算)
5、注意使用预估行高(预估行高会使 cell 在显示之前才会去计算)
6、cellForRowAtIndexPath里面.
*.尽量不要做耗时的操作,如果避免不了使用子线程来处理
*.从本地加载图片,contentOfFile,会在主线程,读文件是本来就是耗时的操作,一进入界面就先用子线程去本地加载图片 NSCache
*.不要在cellForRowAtIndexPath里面写文件
*.cellForRowAtIndexPath里面不要去创建和删除view,最好是先懒加载好,显示就view.hidden = false,不要显示view.hidden = true
7、使用tableView dequeueReusableCellWithIdentifier:forIndexPath时会调用tableView:heightForRowAtIndexPath: ,注意会延时的操作
8、tableView滚动的时候停下gif.视频
9、view的透明层,能不设置就不设置,view尽量不要设置transform
10、视图层次结构不要太多
11、尽量不要图层圆角,1.将图片画成圆角2.让美工提供一张中间是圆角透明的图片遮在图片上面
12、尽量不要去设置图层阴影,会造成额外的开销(离屏渲染) 离屏渲染:GPU在还没有渲染到屏幕上之前要多做的一次渲染 :虚拟机--》Debug --》Color XXX
13、缓存cell的高度:cell高度不同的时候,最好只算一次,然后缓存起来,下次直接使用缓存的高度
14、图片的拉伸或压缩会影响性能(最好一样大)
15. AsyncDisplayKit ---> 第三方:https://github.com/facebook/AsyncDisplayKit