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;
}
让我们看看一些代码^^ 100个原因,为什么会发生这种情况 –
没有什么弧会改变..和那个确切的代码不会崩溃对我来说(只是试过) –
我已经添加了一个示例代码的原始问题。 – stoflow