gpt4 book ai didi

iOS9 - 这个应用程序正在从后台线程修改自动布局引擎——在哪里?

转载 作者:IT老高 更新时间:2023-10-28 11:48:11 29 4
gpt4 key购买 nike

对于搜索,错误信息是:

This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.

我知道这意味着一些 UIKit 代码是从后台线程调用的,我知道解决方案是将代码包装在

dispatch_async(dispatch_get_main_queue(), ^(void){ <code> });

我的问题是找到执行此操作的位置,因为打印的堆栈跟踪都没有引用我的应用程序代码。我证明这个否定的证据是在调试输出窗口中搜索(command-f)我的应用程序的名称;我已经转储了 24 个堆栈跟踪,并且我的应用程序名称不在其中,除了顶部的错误消息。我可以发布其中一个,但这似乎不是很有用。

在我今天处理的案例中,这发生在转换 View Controller 时,在 viewWillDisappear() 之后及之前 viewWillAppear() .我找到了要包装的部分代码 dispatch_async()周围,​​但现在都处理好了。我有断点和调试消息,其中与 View Controller 相关的对象被分配和释放,并且它们都在异常消息出现后触发。在调试和 Release模式下,模拟器和我的 iOS9 iPhone 都会发生这种情况。

如何识别明显修改 UI 的后台代码?

最佳答案

此代码 PSPDFUIKitMainThreadGuard导致主线程外的 UIKit 访问断言

使用步骤:

  1. 添加到项目并在不使用 ARC 的情况下编译此文件
  2. 移动PSPDFAssert定义到文件的第一个
  3. PSPDFLogError 的评论电话因为它没有定义
  4. 导入 <UIKit/UIKit.h>

如果尝试从后台线程修改任何 UI 元素,您的应用将崩溃并停止

为了快速使用以下代码:NBUIKitMainThreadGuard

关于iOS9 - 这个应用程序正在从后台线程修改自动布局引擎——在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32680303/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com