我到处寻找这个,在线,堆栈溢出,但仍然无法解决我做错了什么。
我正在尝试向现有的NSMutableArray添加元素。但它在第4行崩溃了:
-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x897b320
代码:
NSMutableArray *mystr = [[NSMutableArray alloc] init];
mystr = [NSArray arrayWithObjects:@"hello",@"world",@"etc",nil];
NSString *obj = @"hiagain";
[mystr addObject:obj];
我做错了什么?这让我发疯了!!!
答案 0 :(得分:12)
你的数组不可变!使用NSMutableArray
mystr = [NSMutableArray arrayWithObjects:@"hello",@"world",@"etc",nil];
您获得无法识别的选择器,因为NSArray
不包含 addObject 方法
答案 1 :(得分:3)
您的代码应为:
NSMutableArray *mystr = [[NSMutableArray alloc] initWithObjects:@"hello",@"world",@"etc",nil];
NSString *obj = @"hiagain";
[mystr addObject:obj];
答案 2 :(得分:0)
Ahhhhh已经发现了它
第2行应该是:
[NSMutableArray arrayWithObjects:@"hello",@"world",@"etc",nil];
很抱歉浪费你的时间!
答案 3 :(得分:0)
您要将NSArray
而不是NSMutableArray
的实例重新分配到mystr
变量的第二行。
尝试这样的事情:
NSMutableArray *mystr = [NSMutableArray arrayWithObjects:@"hello",@"world",@"etc",nil];
[mystr addObject:@"hiagain"]
答案 4 :(得分:0)
您最初将mystr创建为可变数组,但随后将其分配给下一行中的标准NSArray。不是调用“arrayWithObjects”,而是使用“addObjects”或其他一些不创建新的不可变数组的函数来添加每个项目。