По крайней мере, два других способа немедленно приходят на ум. Есть прямой доступ к ивару:
- (id) init
{
if ( self = [super init] )
{
_retainingProperty = [[NSObject alloc] init];
}
return self;
}
Или вы можете использовать пул автоматического выпуска:
- (id) init
{
if ( self = [super init] )
{
self._retainingProperty = [[[NSObject alloc] init] autorelease];
}
return self;
}
В зависимости от класса свойства могут также существовать удобные методы, эквивалентные последнему.
Лично я бы всегда использовал прямой доступ к ивару. Обычно вызывать методы доступа к свойствам в init
считается плохой формой, поскольку они могут иметь побочные эффекты, которые вы не захотите получить, если объект не полностью инициализирован.
Аналогичные соображения применимы к dealloc
, кстати: лучше release
напрямую использовать ваши ивары, чем использовать методы доступа к свойствам.