我是否必须使用
objective-c中的
copy
属性手动复制
自定义setter中的对象?
例如,
我有一个属性:
@property (copy,nonatomic) Nsstring *someString;
和自定义setter:
- (void)setSomeString:(Nsstring *)someString
{
//option 1
_someString = someString;
//option 2
_someString = [someString copy];
//do other stuff
}
是自定义setter的选项1还是我必须使用选项2才能复制对象?
你可以做任何你喜欢的事,但你应该使用第二个选项.
这是因为它会像
代码文档一样,如果
其他开发人员看到它,他或她会知道你只是通过查看来复制字符串:
@property (copy,nonatomic) Nsstring *someString;
如果您使用retain / assign,则最佳做法是在自定义setter中保留/分配对象.它将使您的代码更清晰,更有文档记录,并且对其他开发人员来说更容易理解.