使用self.array或任何.notation时,无法使数组生效

时间:2015-01-19 06:30:53

标签: objective-c xcode properties nsmutablearray

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

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

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

}

但是任何时候我都要求我的数组添加对象或者insertObject我得到了无法识别的选择器错误(就是当我尝试使用self.array或任何地方的任何.array时)

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

import

@interface CheckArray:NSObject

@property(copy,nonatomic)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]新数组是( )所以它存在,但....

这是错误,为什么它不能识别insertObject?谢谢你能解释一下。

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'

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

因为您使用copy来声明您的属性,所以它会将其变为不可变的 NSArray 。尝试将copy修改为strong

对于您的情况,您使用 NSMutableArray 指针来引用 NSArray 。这就是你无法插入的原因。