目标C - 定制的setter与ARC?(Objective C - Custom setter

2019-06-23 10:14发布

下面是我如何使用编写自定义之前保留的二传手:

- (void)setMyObject:(MyObject *)anObject
{
   [_myObject release], _myObject =  nil;
   _myObject = [anObject retain];

   // Other stuff
}

当属性设置为强劲,ARC我怎样才能做到这一点。 我怎样才能确保该变量具有较强的指针?

Answer 1:

strong发生在伊娃水平照顾自己,所以你可以仅仅做

- (void)setMyObject:(MyObject *)anObject
{
   _myObject = anObject;
   // other stuff
}

仅此而已。

注意:如果你这样做是没有自动属性,伊娃会

MyObject *_myObject;

然后ARC采取的保留关心和释放你(谢天谢地)。 __strong是默认的预选赛。



Answer 2:

只是为了总结答案

.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
}


文章来源: Objective C - Custom setter with ARC?