如何解决:此应用程序正在从后台线程修改autolayout引擎

www*_*.se 5 xcode background ios autolayout ios-autolayout

当代码的某些部分正在从主线程以外的其他线程更改UI项时,会将此错误记录到控制台.但是我怎样才能找到它的位置呢?

www*_*.se 11

"此应用程序正在从后台线程修改自动布局引擎"的主要问题是它似乎在实际问题发生后很长时间内被记录,这可能使得很难进行故障排除.

我设法通过创建三个符号断点来解决问题.

调试>断点>创建符号断点...

断点1:

  • 符号: -[UIView setNeedsLayout]

  • 条件: !(BOOL)[NSThread isMainThread]

断点2:

  • 符号: -[UIView layoutIfNeeded]

  • 条件: !(BOOL)[NSThread isMainThread]

断点3:

  • 符号: -[UIView updateConstraintsIfNeeded]

  • 条件: !(BOOL)[NSThread isMainThread]

使用这些断点,您可以轻松地在非主线程上错误地调用UI方法的实际行中断.