使用 self.array 或任何 .notation 时无法让数组工作



处理一个简单的项目,我的 NSMutableArray 在使用类中的属性与数组通信时不会插入和反对。所以我转到 Xcode 中的命令行和从 main 在 main 工作中创建的任何数组,然后如果我使用 .notation 与数组属性通信,我会得到错误无法识别的选择器。我查找了一些东西,尝试使用一种方法来添加对象,例如- (void)addObjectsToArray {

MyClass *myObject = [[MyClass alloc] init];
[list addObject:myObject];
[myObject release];
OtherClass *anotherObject = [[OtherClass alloc] init];
[list addObject:anotherObject];
[anotherObject release];

}

但是每当我要求我的数组添加对象或插入对象时,我都会收到无法识别的选择器错误(即当我尝试从任何地方使用 self.array 或任何 .array 时)

这是我的类.h没有代码只是属性。我正在尝试使用 newObject.array,然后在它上面调用 insertObject,但没有去...

进口

@interface 检查数组:NSObject

@property(拷贝,非原子)NSMutableArray *array;

@end

在主要我有

CheckArray *newObject = [[CheckArray alloc]init];

    newObject.array  = [[NSMutableArray alloc]init];
    if (newObject.array) {
        [newObject.array insertObject:testString atIndex:0];
    }
    NSLog(@" the new array is %@“, newObject.array);

日志显示 2015-01-19 00:14:32.940 TestOfMutableArray[16647:518334] 新数组是 () 所以它存在但是....

这是为什么它无法识别插入对象的错误?如果您可以解释,谢谢。

2015-01-19 00:05:59.884 TestOfMutableArray[16608:513530] -[__NSArrayI insertObject:atIndex:]:发送到实例0x1001068d0的无法识别的选择器2015-01-19 00:05:59.885 TestOfMutableArray[16608:513530] *** 由于未捕获的异常"NSInvalidArgumentException"而终止应用程序,原因:"-[__NSArrayI insertObject:atIndex:]:无法识别的选择器发送到实例0x1001068d0"

__NSArrayI表示不可变数组,不可变数组不声明改变其内容的方法。在某处,您传递给 .array 的NSArray而不是NSMutableArray

因为你正在使用copy来声明你的属性,它会把它变成不可变的,即 NSArray。尝试将copy修改为 strong

对于您的情况,您使用 NSMutableArray 指针来引用 NSArray。这就是为什么你不能插入。