如何在自动释放池终止期间调试过度发布崩溃?

时间:2016-07-29 17:57:56

标签: ios memory-management crash automatic-ref-counting

我的代码抓住当前的runloop并持续运行(以允许UI交互),同时异步更长的过程发生。

这个较长的过程最终可能会创建大量的Objective-C对象,我相信甚至将其中的一些绑定到Core Foundation结构中,以便与基于Core Foundation的API一起使用。我们在循环体周围使用自动释放池来清理每个循环体执行中的任何对象。

我在自动释放池的末尾遇到崩溃,这意味着某些ARC对象可能已经桥接到释放该对象的CF API。当自动释放池结束时,它很可能尝试释放该对象。

然而,由于它发生在自动释放池的末尾,我没有找到罪魁祸首代码的方法。是否有已知的方法在iOS上的Objective-C中调试这种场景?

for(NSString *runLoopMode in (__bridge NSArray *)allCurrentRunLoopModes)
{
    @autoreleasepool {
        CFRunLoopRunInMode((__bridge CFStringRef)runLoopMode,RUNLOOP_INTERVAL_SECONDS,false);
    } // <- Crash occurs here, when autorelease pool releases objects.
}

0 个答案:

没有答案