的NSMutableArray replaceObjectAtIndex崩潰
所以應該有控制檯的錯誤。控制檯將在發生崩潰時幫助您處理99%的情況,請閱讀! 它應該是像-[NSArrayI replaceObjectAtIndex:withObject:] unrecognized selector sent to instance
。這是你錯誤的重要部分。 NSArrayI
含義NSImmutableArray
(NSArray
換句話說),它不是NSMutableArray
,它指出問題是關於創建Upcase_Keys
。
爲什麼呢?因爲@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"];
這是NSArray
的簡短語法,而不是NSMutableArray
。所以即使它被聲明爲NSMutableArray
,該對象實際上也是NSArray
。 事實上,如果你願意聽的XCode,它應該給你這樣的警告:
不兼容的指針類型與類型'NSArray *'
這一切之前說的協合的 表達初始化'NSMutableArray *'
。 `有時XCode可能是錯誤的,但試着聽它。
有幾個可能性撥打:
NSMutableArray *Upcase_Keys = [NSMutableArray arrayWithArray:@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]];
NSMutableArray *Upcase_Keys = [[NSMutableArray alloc] initWithArray:@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"]];
NSMutableArray *Upcase_Keys = [@[@"1",@"2",@"3",@"4,"@"5",@"6",@"7",@"8",@"9",@"0"] mutableCopy];
最後,建議使用駝峯: 避免命名你的變種以大寫。對第一個字母使用小寫字母。我想說,在_
問題較少之後,我們傾向於在iOS中編寫代碼。
Upcase_Keys
=>upcase_Keys
=>upcaseKeys
感謝您指出的問題。 :D –