首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSArray属性:复制还是保留?

NSArray属性:复制还是保留?
EN

Stack Overflow用户
提问于 2011-05-02 01:07:51
回答 4查看 12.9K关注 0票数 22

根据这个:NSString property: copy or retain?

对于NSString/NSMutableString,建议使用copy。

NSArray/NSMutableArray怎么样?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-02 02:13:40

选择copy,除非您有非常具体的原因不这样做,以及所有支持代码/接口来支持它。

我在这里详细介绍了基本原理和几个含义:NSMutableString as retain/copy

该示例基于NSString%s,但同样适用于NSArray%s。

票数 19
EN

Stack Overflow用户

发布于 2011-05-02 02:26:20

既然您询问的是NSArray (而不是NSMutableArray),那么您应该使用copy。NSArray是不可变的,所以您不希望该类型的属性发生变化。但是NSMutableArray是NSArray的子类,所以对于某些人来说,传入NSMutableArray是完全有效的。如果你只是保留这个对象,那么它可能就在你的眼皮底下改变。如果你复制而不是保留,那么对象不会改变。

然而,你应该意识到当你复制像NSArray这样的容器时,你只是复制了容器,而不是它的内容。如果数组包含可变对象,则这些对象的内容可能会更改,即使数组本身是不可变的。

票数 27
EN

Stack Overflow用户

发布于 2011-05-02 01:26:18

如果底层数据发生更改时出现问题,请使用copy。事实上,这正是您大多数时候想要的,因为在某人背后更改数据是一个很好的bug来源。

请注意,副本本质上只是NSArray的保留。只有当您抛出一个NSMutableArray时,才会涉及到更多的工作。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5849942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档