ios - : This application is modifying the autolayout engine from a background thread如何解决

标签 ios xcode background autolayout ios-autolayout

当代码的某些部分正在从主线程以外的其他线程更改 UI 项目时,此错误将记录到控制台。但我如何才能找到它在哪里执行此操作?

最佳答案

“此应用程序正在从后台线程修改自动布局引擎”的主要问题是,它似乎在实际问题发生后很长时间才被记录下来,这使得故障排除变得非常困难。

我通过创建三个符号断点设法解决了这个问题。

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

断点 1:

  • 符号:-[UIView setNeedsLayout]

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

断点 2:

  • 符号:-[UIView layoutIfNeeded]

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

断点 3:

  • 符号:-[UIView updateConstraintsIfNeeded]

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

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

关于ios - : This application is modifying the autolayout engine from a background thread如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45689126/

相关文章:

ios - 谁实际上是本地参与者标识符?

ios - 如何获取 objective-c 中文本字段的文本颜色?

xcode - 如何快速退出自定义第一响应者

android - iOS 等同于 Android 服务?

html - 不展开全贴合背景图

iphone - 来自多个方法的 NSURLConnection 请求 - 获取启动方法的回调

ios - 如何在 Swift 中使用 (?) 和 (!)

ios - 如何让 AdMod 显示实际广告而不是测试广告以及它是如何工作的?

ios - 找不到 Apple 推送通知服务的证书签名请求 (CSR)

html - 内联样式不在 IE7、8、9 中呈现