objc-runtime search_method_list永久挂起,死锁?

时间:2019-04-02 07:50:11

标签: ios objective-c cocoa objective-c-runtime

macOS / iOS开发人员,大约两个月前,我的应用有时会永远挂起。然后我对我发现几乎线程的程序进行了采样,但主线程正在等待锁定。而主线程则在objc运行时代码中执行,如下图所示。并且应用程序不会崩溃,方法不会返回:(

Main Thread

other thread that is executing objc-code, are waiting for lock

然后,我查看objc-runtime源代码objc-runtime并编译一个调试versin,链接到我的程序。它重现了问题。在函数IMP lookUpImpOrForward(Class cls, SEL sel, id inst, bool initialize, bool cache, bool resolver)中,主线程确实保存了 runtimeLock ,其他线程正在等待。但我不知道是什么原因引起的,根本原因是什么?有什么猜想吗?谢谢大家!

0 个答案:

没有答案