目标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 }