Я немного оценил следующий фрагмент:
В заголовке:
SomeClass *bla;
@property(nonatomic,retain) SomeClass *bla;
В файле реализации:
@synthesize bla;
а затем
self.bla = [[SomeClass alloc] init];
Я думаю, что это задание ставит счетчик "bla" на два; один раз через вызов alloc/init, затем через сохранение, которое мы попросили, чтобы произойти с помощью установщика синтезированных свойств.
В результате я обычно объявляю свои свойства следующим образом:
В заголовке:
SomeClass *_bla; // note the underscore
@property(nonatomic,retain) SomeClass *bla;
В файле реализации:
@synthesize bla = _bla;
а затем
_bla = [[SomeClass alloc] init];
Если мое первоначальное предположение верно - мне было бы интересно узнать, есть ли "правильный" способ сделать это, т.е. объявление, инициализация и управление памятью свойств?