我有一个方法,每次设备位置更新时,都会包含以下语句:

只是好奇为什么我从这里的PrevSpeedDic收到SIGABRT信号:

if (DriveInfoDic != nil) {
    PrevSpeedDic = [DriveInfoDic objectForKey: @"speed"];
} else {
    DriveInfoDic = [[NSDictionary alloc] init];
}


但是,当我将此内容移至上方的声明时,它应该可以正常工作。我的变量定义正确,或者在任何情况下均无效。

  DriveInfoDic = [NSDictionary dictionaryWithObjectsAndKeys:
  [NSNumber numberWithDouble:speedMPH], @"speed", nil];

最佳答案

默认情况下,局部变量未初始化为0(零)。如果在此之前未设置DriveInfoDic,它将进入第一个分支并崩溃。

关于objective-c - 访问NSDictionary时的SIGABRT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6588337/

10-10 16:01