美文网首页
[iOS]性能优化常见方案

[iOS]性能优化常见方案

作者: 沵可安好 | 来源:发表于2022-11-11 10:11 被阅读0次
TableViewCell 复用

在cellForRowAtIndexPath:回调的时候只创建实例,快速返回cell,不绑定数据。在willDisplayCell: forRowAtIndexPath:的时候绑定数据(赋值)。

TableViewCell 高度缓存

在tableView滑动时,会不断调用heightForRowAtIndexPath:,当cell高度需要自适应时,每次回调都要计算高度,会导致 UI 卡顿。为了避免重复无意义的计算,需要缓存高度。

TableView刷新

局部刷新,刷新一个cell就能解决的,坚决不刷新整个section或者整个tableView,刷新最小单元元素。
利用runloop提高滑动流畅性,在滑动停止的时候再加载内容。

减少透明view的使用

只要一个视图的不透明度小于1,就会导致blending,blending主要指的是混合像素颜色的计算。举个例子,我们把两个图层叠加在一起,如果第一个图层的有透明效果,则最终像素的颜色计算需要将第二个图层也考虑进来。这一过程即为Blending。
为什么Blending会导致性能的损失?
原因是很直观的,如果一个图层是不透明的,则系统直接显示该图层的颜色即可。而如果图层是透明的,则会引入更多的计算,因为需要把下面的图层也包括进来,进行混合后颜色的计算。

避免臃肿的XIB文件

当你加载一个XIB到内存的时候,它所有的内容都会载入内存,包括所有的图片。如果你有视图但不是要立即使用,那你就浪费了珍贵的内存。

视图的延迟加载

如果界面中有一部分视图控件不需要立即显示,则我们可以将它设计成延迟加载模式,当真正要使用它的时候再进行创建.

及时释放不需要再使用的对象

把程序中不需要再使用的对象和内存空间及时释放,可以节省程序的内存消耗,从而提高性能.

调整图像视图中的图像尺寸

如果你用UIImageView呈现app束中的图片时,确认图片和UIImageView的尺寸相同。缩放图片会非常的耗时,特别是当你的UIImageView被嵌入UIScrollView。
如果图片是从远程服务器上下载的,有时你没法控制图片尺寸,或者你不能在服务器上在下载之前缩放它。在这些情况下你可以在图片下载完成后手动缩放一次,最好是在后台进程中。然在UIImageView中使用调整尺寸之后的图片。

减少离屏渲染

当一个视图中有大量圆角,应该考虑使用Core Graphics的技术进行绘制操作(即Quarz2D绘图)来实现圆角.替代cornerRadius,mask方案.或者可以考虑异步绘制.在异步线程中绘制圆角.
为了避免离屏渲染,你应当尽量避免使用 layer 的 border、corner、shadow、mask 等技术。当你需要图片圆角的时候,最好让美工直接切圆角图片

不要阻塞主进程

永远不应该在主线程中做任何繁重的工作。这是因为UIKIt的所有工作都在主线程中进行,比如绘画,管理触摸,和响应输出。你的app的所有工作都在主线程上进行就会有阻塞主线程的风险,你的app会表现的反应迟钝。

减少重用大开销对象使用

有的对象的初始化非常慢,例如NSDateFormatter 和 NSCalendar,我们应该尽量避免使用它们。

相关文章

网友评论

      本文标题:[iOS]性能优化常见方案

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