Why we use ‘copy’ attribute for NSString property?

By | 2013 年 7 月 15 日
@interface AClass:NSObjet
@property (nonatomic, copy) NSString* aStrProperty;
@end

Like the code above, we use ‘copy’ instead of ‘retain’ attribute in the NSString property. For the reason, is that we do not want the original NSString object to be modified in this class.
像上面这段代码,为什么要用copy而不是retain呢?因为我们不希望外面的字符串在不经意间由这个类的对象修改。

But for that a NSString cannot be modified, why not using the ‘retain’ instead of ‘copy’? Because, one can also assign the aStrProperty with a NSMutableString instead of NSString. Thus, ‘copy’ is more safe than ‘retain’.
可是,既然NSString是不可以被修改的,为什么还有这个担忧呢?因为虽然NSString不可修改,可是使用者完全可能将一个NSMutableString传递给aStrProperty,然后在类方法里修改它的内容,这不是我们希望出现的,所以采用copy。

发表评论

电子邮件地址不会被公开。 必填项已用*标注