2011-07-05 47 views
0

時,我有一個名爲每個包含語句的設備位置更新時間如下方法:SIGABRT訪問的NSDictionary

只是好奇,爲什麼我從這個PrevSpeedDic得到一個SIGABRT信號在這裏:

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

但是,當我將上面的聲明移到上面時,它應該可以正常工作。我的變量被正確定義,或者在任何情況下都不起作用。

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

回答

3

默認情況下局部變量未初始化爲0(零)。如果在此之前沒有設置DriveInfoDic,那麼它將採用第一個分支並崩潰。

+0

謝謝你非常有幫助 – TaylorMac

+0

如果你的目標是iOS 5,你應該使用ARC(其中局部變量初始化爲零)。請注意,ARC不在NDA之下,但是iOS 5的API和開發工具的任何細節都是。 – bbum