根据这个:NSString property: copy or retain?
对于NSString/NSMutableString,建议使用copy。
NSArray/NSMutableArray怎么样?
发布于 2011-05-02 02:13:40
选择copy,除非您有非常具体的原因不这样做,以及所有支持代码/接口来支持它。
我在这里详细介绍了基本原理和几个含义:NSMutableString as retain/copy
该示例基于NSString%s,但同样适用于NSArray%s。
发布于 2011-05-02 02:26:20
既然您询问的是NSArray (而不是NSMutableArray),那么您应该使用copy。NSArray是不可变的,所以您不希望该类型的属性发生变化。但是NSMutableArray是NSArray的子类,所以对于某些人来说,传入NSMutableArray是完全有效的。如果你只是保留这个对象,那么它可能就在你的眼皮底下改变。如果你复制而不是保留,那么对象不会改变。
然而,你应该意识到当你复制像NSArray这样的容器时,你只是复制了容器,而不是它的内容。如果数组包含可变对象,则这些对象的内容可能会更改,即使数组本身是不可变的。
发布于 2011-05-02 01:26:18
如果底层数据发生更改时出现问题,请使用copy。事实上,这正是您大多数时候想要的,因为在某人背后更改数据是一个很好的bug来源。
请注意,副本本质上只是NSArray的保留。只有当您抛出一个NSMutableArray时,才会涉及到更多的工作。
https://stackoverflow.com/questions/5849942
复制相似问题