3

dispatch_once在我将项目转换为ARC之后,调用导致崩溃(在模拟器中)。我的原始问题是,我有一个单身人士对象的+(SingletonClass)共享{... dispatch_once(...,^ {})中有EXC_BAD_ACCESS(在objc_retain调用中)崩溃; ...}方法恰好在dispatch_once调用之前的一行。基于测井公司dispatch_once通话导致崩溃

和断点我的代码都没有运行到dispatch_once调用的块。

我不知道原因,所以我只是注释掉dispatch_once电话。没有这个电话,我的应用程序没有崩溃。

之后,我已经试图把dispatch_once在我的应用程序调用前面的方法。基于这一点,我知道Xcode指向dispatch_once调用之前的那一行,而不管dispatch_once调用的方法如何。

这对我来说是一个谜最主要的是,如果我运行在模拟器应用程序,这是唯一的可重复性。在设备上运行应用程序没有任何问题。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSLog(@"I will crash if you won't delete the dispatch_once after me and you run me in the iOS Simulator... If you run me on a device there won't be any problem with me..."); 

    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     int a = 42; 
    }); 

    return NO; 
} 
+1

让我们看看一些代码^^ 100个原因,为什么会发生这种情况 –

+0

没有什么弧会改变..和那个确切的代码不会崩溃对我来说(只是试过) –

+0

我已经添加了一个示例代码的原始问题。 – stoflow

回答

1

我一直在争取此相同问题的一小会儿在基于PhoneGap的项目我已经转换为ARC而回 - 在模拟器上而不是设备上的崩溃。

我创建了一个新的项目,相同的代码工作确定,所以我通过项目配置去看什么不同。

就我而言,我有老联合国需要连接标志设置,具体-weak_library /usr/lib/libSystem.B.dylib

从“构建设置”中的“其他链接器标志”部分删除它已修复它。