ios – objective-c中复制属性的自定义setter

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

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...