2012-05-21 88 views
2

我不知道爲什麼,但我的NSMutableArray'items'不會超過5個元素。NSMutableArray EXC_BAD_ACCESS(code = 1)

有人可以幫忙嗎?我正在關注Big Nerd Ranch iOS編程書。

此代碼工作正常:

NSMutableArray *items = [[NSMutableArray alloc] init]; 
for (int i = 5; i < 10; i++) { 
    BNRItem *p = [BNRItem randomItem]; 
    [items addObject:p]; 
} 

但是如果我到4或更小程序崩潰退出for循環時改變i的初始值:

NSMutableArray *items = [[NSMutableArray alloc] init]; 
for (int i = 4; i < 10; i++) { 
    BNRItem *p = [BNRItem randomItem]; 
    [items addObject:p]; 
} 

錯誤截圖:http://db.tt/3CdueSYh

+1

此代碼看起來沒問題,最可能的錯誤是在其他地方。嘗試在異常拋出時使用斷點進行調試,並查看代碼實際崩潰的位置 – Vladimir

+0

我使用斷點將崩潰縮小到for循環的退出位置。這似乎是一個瘋狂的錯誤! – ajnet

+0

can + randomItem方法會成爲問題嗎? – Vladimir

回答

7

更改您的

NSArray *randomNounList = [NSArray arrayWithObjects:@"Bear", @"Spork", "Mac", nil]; 

到:

NSArray *randomNounList = [NSArray arrayWithObjects:@"Bear", @"Spork", @"Mac", nil]; 

你忘@"Mac"

希望它可以幫助

+0

感謝您的幫助! – ajnet

3

在你在你發表的評論要添加一個C字符串,"Mac",你randomNounList陣列的屏幕截圖。您需要使用@符號將其作爲NSString。

我懷疑隨機選擇此條目時發生崩潰。

我很驚訝這個編譯,我懷疑你忽略了一些警告。

+0

哎唷,很好看!我開始認爲這是與該陣列太早自動釋放有關...謝謝! – ajnet

相關問題