給予EXC_BAD_ACCESS我在我的方法中定義的C數組爲:陣列在for循環
int c = 4;
int r = 5;
keysArray[c][r];
我有這樣的for循環,其工作方式,填充作爲預期keysArray
。
for (int row = 0; row < r; row++) {
for (int column = 0; column < c; column++){
keysArray[column][row] = [anotherArray objectAtIndex:0];
NSLog(@"array1 %@",keysArray[column][row]);
[anotherArray removeObjectAtIndex:0];
}
}
然後,在for循環下,恰好具有同樣的循環計數器的結構,當我嘗試的NSLog陣列,它給出了一個EXC_BAD_ACCESS。
for (int row = 0; row < r; row++){
for (int column = 0; column < c; column++) {
NSLog(@"array2: %@",keysArray[column][row]); //EXC_BAD_ACCESS here
}
}
假如在方法體中定義了keysArray,在兩組循環之外定義了keysArray,會導致這種情況發生嗎?
我需要一個多維數組來存儲網格中按鈕的行/列位置,使用C數組是我能想到的最簡單的方法,除非您可以建議更合適的方法嗎?爲什麼重要的是另一個數組是否保留在其他地方,而不是現在它的內容存儲在keysArray中?另一個陣營是伊娃。 – joec 2010-09-28 11:09:06
這不是關於'anotherArray'被保留,而是關於其內容。通過從陣列中刪除它們,它們正在被釋放。如果你沒有在別處保留它們,它們將被釋放。二維數組只是一個數組數組。你也可以很容易地用'NSMutableArrays'完成它:'[[columns objectAtIndex:column] objectAtIndex:row];' – 2010-09-28 11:13:17
好吧,我現在已經使用Objective C數組實現了它,但是現在仍然失敗。將它們存儲在可變數組中不會保留它們嗎? – joec 2010-09-28 11:33:00