Подтвердить что ты не робот

Цель C - Пользовательский сеттер с ARC?

Вот как я обычно писал настраиваемый сохраненный набор:

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

   // Other stuff
}

Как я могу достичь этого с помощью ARC, когда свойство установлено на сильное. Как я могу убедиться, что переменная имеет сильный указатель?

4b9b3361

Ответ 1

strong заботится о себе на уровне ivar, поэтому вы можете просто делать

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

и что он.

Примечание: если вы делаете это без автоматических свойств, ivar будет

MyObject *_myObject;

а затем ARC берет на себя заботы о сохранении и выпусках для вас (к счастью). __strong является классификатором по умолчанию.

Ответ 2

Просто подытожим ответ

.h файл

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