我有一个@property (nonatomic,copy) NSMutableArray* children;
,我正在向这个数组添加/删除项目。NSMutableArray removeObject:引发错误
这里的惊喜:
- (void)addChildDocument:(PPDocument *)doc {
[_children addObject:doc];
}
- (void)removeChildDocument:(PPDocument*)doc {
[_children removeObject:doc];
}
第一个工作正常。第二个不是。
-[__NSArrayI removeObject:]: unrecognized selector sent to instance
能否请您给我解释不清楚是怎么回事,以及如何children
阵列突然显示为不变?
UPDATE:
的问题已得到解决。然而,尽管可能会引发你的奇怪,但大多数人提到的copy
与这个问题无关。奇怪的是,它必须处理每个PPDocument
的parent
属性未被正确设置为weak
。一旦我做到了(并且保持原样),一切正常 - 正如预期的那样。无论如何,NSMutableArray
仍然是可变的。
@Alladinian没有,它没有工作。而且,顺便说一句,你所说的看起来并不真实。如果'children'作为不可变对象返回,为什么addChildDocument'每次都工作? – 2014-09-25 14:39:55
你可以分享阵列的初始化/分配吗?另外作为副本'copy'总是会让你成为一个不可变的实例,也许'strong'是更合适的选择。 – Alladinian 2014-09-25 14:40:23
@ Dr.Kameleon是的,我意识到你直接访问伊娃并删除了第一条评论(除非你在某处使用'self.children',并重新分配)。 – Alladinian 2014-09-25 14:41:03