gpt4 book ai didi

objective-c - 如何从辅助线程找到对 UIKit 实例的调用?

转载 作者:可可西里 更新时间:2023-11-01 03:30:16 24 4
gpt4 key购买 nike

我的应用程序在 iOS 5 中崩溃,因为我有一些代码从辅助线程调用 UIKit 实例。当您看到以下错误时,您就知道您遇到了这个问题:

bool _WebTryThreadLock(bool), 0x811bf20: 不允许对 web 线程进行多重锁定!请提交错误。现在崩溃了……

所以我的问题是,我可以通过哪些方式找到从辅助线程调用 UIKit 实例的代码?

以下是我已经尝试过的一些方法:

  1. 注释掉可能违反规则的 block
  2. 在可能在辅助线程中处理的地方添加了assert([NSThread isMainThread])
  3. _WebTryThreadLock 添加了符号断点

这些东西帮助我找到了问题所在。然而,在我的最后一次崩溃中,_WebTryThreadLock 断点在任何其他线程中都没有堆栈跟踪。那么,如何在没有堆栈跟踪的情况下找到导致问题的代码?

感谢您的宝贵时间!

最佳答案

您的 assert() 可能是其中最有值(value)的工具。众所周知,我在我的 Controller 类中的每个方法的开头都放置了类似的断言。如果没有找到它,我将断言添加到我的 View 类中。如果找不到它,我会将它添加到我认为仅是主线程的任何模型类中。

对于@craig 的评论,它声称是内部错误的事实可能是准确的。但我认为您首先仔细检查自己的代码是正确的。

关于objective-c - 如何从辅助线程找到对 UIKit 实例的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7839229/

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