将NSAttributedString分配给UILabel很慢?

dfu*_*ara 7 instruments uikit nsattributedstring uilabel ios

我一直在尝试解决毛刺表视图滚动性能问题.通过Instrument的Time Profiler运行它表明花费了相当多的时间将NSAttributedString设置为UILabel.这是一个已知的问题吗?如果是这样,有解决方法吗?

我看到一些报道称在iOS8上创建NSAttributedString的速度非常慢,并且在iOS9上有所改进,但它是否也将它设置为包含UI元素的速度慢?在iOS 8下,NSAttributedString性能更差

下面是我的分析屏幕截图.请注意,视图模型不会动态创建属性字符串,因此您看到的成本完全来自赋值.当然,UILabel可以执行昂贵的操作,我不知道如何绕行.

在此输入图像描述

我感谢任何帮助.

Iva*_*lov 0

在此方法的顶部,您可以检查单元仅配置一次。滚动时单元格会被重用,因此您可以多次使用相同的视图模型配置单元格,但这是不需要的。代码将如下所示

guard self.viewModel !== viewModel else { return }
Run Code Online (Sandbox Code Playgroud)

或将 viewModel.profileInformation.attributedText 与标签处的值进行比较。