处理一个简单的项目,我的 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。这就是为什么你不能插入。