在 iOS 17 上调用 CALayer 的 setNeedsDisplay() 方法可能会导致崩溃

问题描述 投票:0回答:1

在 iOS 17 上调用 CALayer 的 setNeedsDisplay() 方法可能会导致崩溃。尽管我从主线程调用了该方法,但它在内部触发了后台线程中视图的layoutSubviews方法,导致下面的崩溃。

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“从主线程访问布局引擎后,不得从后台线程执行对布局引擎的修改。对于没有关联或祖先视图控制器的 UITextEffectsWindow 主线程,不支持布局

我们有一个使用 CALayer 绘制的网格视图。每当网格数据发生变化时,我们都会使用layer.setNeedsDisplay()方法重新绘制网格。然而,当我们在网格中快速提交数据时,它会频繁调用该方法,从而导致崩溃。这个问题在 iOS 17 之后开始出现。已附上崩溃日志,请检查崩溃的回溯。

ios swift xcode core-animation calayer
1个回答
0
投票

使用主线程,因为UI更新总是需要优先线程。

© www.soinside.com 2019 - 2024. All rights reserved.