Objective C - Custom setter with ARC?

拜拜、爱过 提交于 2019-11-27 02:03:20

问题


Here is how I used to write a custom retained setter before:

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

   // Other stuff
}

How can I achieve this with ARC when the property is set to strong. How can I make sure that the variable has strong pointer?


回答1:


The strong takes care of itself on the ivar level, so you can merely do

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

and that's it.

Note: if you're doing this without automatic properties, the ivar would be

MyObject *_myObject;

and then ARC takes cares of the retains and releases for you (thankfully). __strong is the qualifier by default.




回答2:


Just to sum up the answer

.h file

//If you are doing this without the ivar
@property (nonatomic, strong) MyObject *myObject;

.m file

@synthesize myObject = _myObject;

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


来源:https://stackoverflow.com/questions/10038302/objective-c-custom-setter-with-arc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!