IOS中,ARC环境下 @property (nonatomic, copy) NSString *name; 重写该属性的setter方法时,要不要在setter方法内执行copy操作?如果执行copy操作,那么是不是不符合内存管理的原则了?因为显示调用了copy,难道不用显示的执行一次release/autorelease,但是ARC中,release和autorelease是不能用的?下面那种写法比较合理?(注意:ARC 环境下)
第一种:
(void)setName:(NSString *)name {
if (_name != name) {
_name = nil;
_name = [name copy];
}
}
第二种:
(void)setName:(NSString *)name {
if (_name != name) {
_name = nil;
_name = name;
}
}
不用这么麻烦,直接这样就够了:
- (void)setName:(NSString *)name {
_name = [name copy];
}
至于内存管理这些,ARC 都帮你管理好了,你不需要 release 也不需要 autoRelease。