如何解决:此应用程序正在从后台线程修改自动布局引擎
How to solve: This application is modifying the autolayout engine from a background thread
当代码的某些部分从主线程以外的其他线程更改 UI 项时,此错误将记录到控制台。但是我怎样才能找到它在哪里执行此操作?
"This application is modifying the autolayout engine from a background thread" 的主要问题是它似乎在实际问题发生后很长时间才被记录下来,这使得排除故障变得非常困难。
我通过创建三个符号断点设法解决了这个问题。
调试 > 断点 > 创建符号断点...
断点 1:
符号:-[UIView setNeedsLayout]
条件:!(BOOL)[NSThread isMainThread]
断点 2:
符号:-[UIView layoutIfNeeded]
条件:!(BOOL)[NSThread isMainThread]
断点 3:
符号:-[UIView updateConstraintsIfNeeded]
条件:!(BOOL)[NSThread isMainThread]
使用这些断点,您可以轻松地在您在非主线程上错误地调用 UI 方法的实际行上打断。
当代码的某些部分从主线程以外的其他线程更改 UI 项时,此错误将记录到控制台。但是我怎样才能找到它在哪里执行此操作?
"This application is modifying the autolayout engine from a background thread" 的主要问题是它似乎在实际问题发生后很长时间才被记录下来,这使得排除故障变得非常困难。
我通过创建三个符号断点设法解决了这个问题。
调试 > 断点 > 创建符号断点...
断点 1:
符号:
-[UIView setNeedsLayout]
条件:
!(BOOL)[NSThread isMainThread]
断点 2:
符号:
-[UIView layoutIfNeeded]
条件:
!(BOOL)[NSThread isMainThread]
断点 3:
符号:
-[UIView updateConstraintsIfNeeded]
条件:
!(BOOL)[NSThread isMainThread]
使用这些断点,您可以轻松地在您在非主线程上错误地调用 UI 方法的实际行上打断。