Цель C - Пользовательский сеттер с ARC?
Вот как я обычно писал настраиваемый сохраненный набор:
- (void)setMyObject:(MyObject *)anObject
{
[_myObject release], _myObject = nil;
_myObject = [anObject retain];
// Other stuff
}
Как я могу достичь этого с помощью ARC, когда свойство установлено на сильное.
Как я могу убедиться, что переменная имеет сильный указатель?
Ответы
Ответ 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
}