0
void _WebThreadLockFromAnyThread(bool), 0x205acdf0: Obtaining the web lock from a thread other than the main thread or the web thread. UIKit should not be called from a secondary thread.

这看起来很严重。我希望程序在那时中断。我不觉得我可以从主线程之外的任何地方访问 UIKit。

但是,警告就在那里,我不知道在我的代码中发生了什么

4

1 回答 1

2

这意味着您的代码在某个时候从非主线程调用。问题是你不记得或不知道在哪里。你只是觉得你没有,但实际上你的代码确实如此。

我的建议是重动态断言。在每个可疑的方法和函数上安装线程检查断言。例如,

- (void)test
{
   NSAssert([[NSThread currentThread] isMainThread], @"This code is expected to be called from main thread!");
}

然后断言最终会使您的应用程序在无效的线程上下文中崩溃。如果你不是那么幸运,你可以在每个方法上安装断言。

无论如何,一旦断言失败,您就可以从那里开始。如果你发现了不好的地方,下面的步骤只是微不足道的。

于 2013-03-14T10:42:40.813 回答