的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 –