我正在查:

[[UIDevice currentDevice] systemName]

在applicationDidEnterBackground中。这导致EXC_BAD_ACCESS(SIGSEGV)信号。堆栈跟踪显示这是在UIDevice内部发生的,它正在调用CFDictionaryGetValue。

实验,调用:
CFDictionaryGetValue(NULL, "key");

导致相同的错误。

有任何想法吗?我在后台搜索了有关访问UIDevice的文档,但没有发现任何指示它应该是问题的信息。

谢谢

最佳答案

在我的测试中,调用(并记录)applicationDidEnterBackground中的[[UIDevice currentDevice] systemName]:效果很好。 CFDictionaryGetValue(NULL,“key”)将始终崩溃,并且与您遇到的问题无关。

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    NSString *systemName = [[UIDevice currentDevice] systemName];
    if ( systemName )
        NSLog(@"%@", systemName);
    else
        NSLog(@"null systemName");
}

10-07 19:49