Возможно, я слишком быстро вскочил в Objective-C и предположил, что я достаточно хорошо знал об управлении памятью, чтобы погрузиться. Оказывается, я не был.Как установить значение свойства в Objective-C на правильном пути
Ускоренная перемотка вперед, и я догнал ... по большей части. Один из моих последних оставшихся вопросов касается процесса @ property/@ synhesize и правильной настройки этих значений.
Я часто видел это:
SomeObject *obj = [[SomeObject alloc] init];
self.obj = obj;
[obj release];
Это имеет смысл, но мне интересно, если это выполняет достаточно подобную вещь, чтобы быть альтернативой:
self.obj = [[[SomeObject alloc] init] autorelease];
ли это быть приемлемым в любом месте может установить значение @property
, obj
? Или прямой доступ к переменной экземпляра, предпочтительной для обоих из методов init
?
obj = [[SomeObject alloc] init];
Thanks.
EDIT: Определенно связанный question, который обсуждает половину моего вопроса. Часть моего вопроса упоминается в одном из ответов, но не подтверждена.
Так мои вопросы по-прежнему остаются:
- Является
autorelease
реальной альтернативой в этой ситуации? - Могут ли использоваться
autorelease
в методеinit
или переменная экземпляра всегда должна быть установлена непосредственно в методеinit
?
Тесно связаны, можно дублировать: http://stackoverflow.com/questions/7842641/best-way-to-set-a-retained-property-to-a-newly-created-object –