NSMutableArray传递引用

时间:2014-09-09 09:36:42

标签: objective-c nsmutablearray

在我的班级MyClass1中,NSMutableArray声明了这样:

NSMutableArray *somearray = [NSMutableArray new];
NSMutableArray *somearray2 = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];
[somearray addObject: somearray2]; 

稍后我创建另一个类的实例并像参数一样发送此数组:

Myclass2 *secondclass = [Myclass2 new];
[secondclass updateData: somearray];

在updateData中:

-(void) updateData:(NSMutableArray *) myArray{
  [myArray[0][1] replaceObjectAtIndex:1 withObject:@"Some text"]; // here receive error
}

并收到错误,我如何发送链接到我的" somearray"到另一个班级和他一起工作(不是复制他们)?我可以创建全局变量,但不能做到这一点。

抱歉,我更新了我的问题。

错误

2014-09-09 12:40:38.778 FCalendar[12644:613] -[__NSArrayI replaceObjectAtIndex:withObject:]:   unrecognized selector sent to instance 0x10963fec0
2014-09-09 12:40:38.783 FCalendar[12644:613] *** Terminating app due to uncaught exception   'NSInvalidArgumentException', reason: '-[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized   selector sent to instance 0x10963fec0'

1 个答案:

答案 0 :(得分:2)

您已创建NSArray个实例而不是NSMutableArray

试试这个:

NSMutableArray *somearray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5", nil];

编辑:你纠正了你的问题,所以我修改了我的答案。

这行代码错误NSMutableArray *somearray2 = [[NSMutableArray new]initWithObjects:@"1",@"2",@"3", nil];,您应该使用NSMutableArray *somearray2 = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];代替。

然后[myArray[0][1] replaceObjectAtIndex:1 withObject:@"Some text"];,我认为它应该是[myArray[0] replaceObjectAtIndex:1 withObject:@"Some text"];。希望这是你想要的,还有很长的路要走。