将NSAttributedString分配给UILabel很慢?

时间:2016-08-22 05:24:54

标签: ios uikit uilabel instruments nsattributedstring

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

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

以下是我的分析中的屏幕截图。请注意,视图模型不会动态创建属性字符串,因此您看到的成本纯粹来自分配。当然,UILabel可以执行昂贵的操作,我不知道如何到处走。

enter image description here

我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在此方法的顶部,您可以检查单元仅配置一次。单元格在滚动时正在重用,因此您可以使用相同的视图模型多次配置单元格,而这是不需要的。代码看起来像这样

guard self.viewModel !== viewModel else { return }

或     比较viewModel.profileInformation.attributedText与标签上的值。