macOS / iOS开发人员,大约两个月前,我的应用有时会永远挂起。然后我对我发现几乎线程的程序进行了采样,但主线程正在等待锁定。而主线程则在objc运行时代码中执行,如下图所示。并且应用程序不会崩溃,方法不会返回:(
然后,我查看objc-runtime源代码objc-runtime并编译一个调试versin,链接到我的程序。它重现了问题。在函数IMP lookUpImpOrForward(Class cls, SEL sel, id inst,
bool initialize, bool cache, bool resolver)
中,主线程确实保存了 runtimeLock ,其他线程正在等待。但我不知道是什么原因引起的,根本原因是什么?有什么猜想吗?谢谢大家!