我有@property (nonatomic,copy) NSMutableArray* children;
,我在这个数组中添加/删除项目。
这里出人意料:
- (void)addChildDocument:(PPDocument *)doc {
[_children addObject:doc];
}
- (void)removeChildDocument:(PPDocument*)doc {
[_children removeObject:doc];
}
第一个工作正常。第二个没有。
-[__NSArrayI removeObject:]: unrecognized selector sent to instance
您能否详细向我解释一下发生了什么以及children
阵列突然显示为不可变的方式?
更新
问题已经解决。然而,尽管它可能会让你觉得奇怪,但copy
大多数人提到的问题与此问题无关。奇怪的是,它与每个parent
的{{1}}属性未被正确设置为PPDocument
有关。一旦我这样做(并保持weak
原样),一切正常 - 正如预期的那样。并且children
仍然是可变的。
答案 0 :(得分:-1)
你一定在做:
obj.children = @[ @"Some", @"immutable", @"array" ];
这些电话之间。
答案 1 :(得分:-3)
您无法移除您在方法中添加的内容。你需要给他一个数组索引。
例如,
[_children removeObject:[_children lastObject]];
如果你知道它总会成为最后一个。
如果不是,请提供评论,说明对象的位置。
编辑:实际上你可以做到以下几点,你也可以试试吗?
[_children removeObjectAtIndex:[_children indexOfObject:doc]];