我是否必须使用
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中保留/分配对象.它将使您的代码更清晰,更有文档记录,并且对其他开发人员来说更容易理解.