目标C – 用ARC定制setter?
以下是我以前如何编写自定义保留的 setter:
- (void)setMyObject:(MyObject *)anObject { [_myObject release], _myObject = nil; _myObject = [anObject retain]; // Other stuff }
当属性设置为强时,如何使用ARC来实现这一点。 我怎样才能确保variables有强大的指针?
在伊瓦尔水平上, strong
自己照顾自己,所以你只能这样做
- (void)setMyObject:(MyObject *)anObject { _myObject = anObject; // other stuff }
就是这样。
注意:如果你这样做没有自动属性,伊娃是
MyObject *_myObject;
然后ARC负责保留和释放你(谢天谢地)。 __strong
是默认的限定符。
只是总结答案
.h文件
//If you are doing this without the ivar @property (nonatomic, strong) MyObject *myObject;
.m文件
@synthesize myObject = _myObject; - (void)setMyObject:(MyObject *)anObject { if (_myObject != anObject) { _myObject = nil; _myObject = anObject; } // other stuff }