7

我到处寻找这个,在线,堆栈溢出,但仍然无法弄清楚我做错了什么。

我正在尝试向现有的 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];

我究竟做错了什么?这真让我抓狂!!!

4

5 回答 5

14

你的数组是不可变的!采用NSMutableArray

mystr = [NSMutableArray arrayWithObjects:@"hello",@"world",@"etc",nil];

您得到 无法识别的选择器,因为NSArray不包含addObject方法

于 2012-11-29T15:58:49.200 回答
3

您的代码应该是:

NSMutableArray *mystr = [[NSMutableArray alloc] initWithObjects:@"hello",@"world",@"etc",nil];

NSString *obj = @"hiagain";

[mystr addObject:obj];
于 2012-11-29T15:59:42.830 回答
0

啊啊啊已经看出来了

第 2 行应该是:

[NSMutableArray arrayWithObjects:@"hello",@"world",@"etc",nil];

很抱歉浪费你的时间!

于 2012-11-29T15:59:08.070 回答
0

第二行你将一个实例重新分配NSArrayNSMutableArray你的mystr变量。

尝试这样的事情:

NSMutableArray *mystr = [NSMutableArray  arrayWithObjects:@"hello",@"world",@"etc",nil];

[mystr addObject:@"hiagain"]
于 2012-11-29T15:59:46.830 回答
0

您最初将 mystr 创建为可变数组,但随后将其分配给下一行中的标准 NSArray。而不是调用“arrayWithObjects”,而是使用“addObjects”或其他一些不会创建新的不可变数组的函数添加每个项目。

于 2012-11-29T16:00:05.560 回答