Самый простой способ управления сохраненным свойством на iPhone заключается в следующем (авто-релиз не так плох, как вы думаете, по крайней мере, для большинства случаев использования):
-(id)init {
if (self = [super init]) {
self.someObject = [[[Object alloc] init] autorelease];
}
return self;
}
-(void)dealloc {
[someObject release];
[super dealloc];
}
autorelease
освобождает ссылку на плавающий экземпляр, который назначен на self.object
, который сохраняет свою собственную ссылку, оставляя вам одну нужную ссылку (someObject
). Затем, когда класс уничтожен, освобождается единственная оставшаяся ссылка, уничтожающая объект.
Как описано в другом ответе, вы также можете создавать одно или несколько сообщений «конструктора» для создания и автоматического освобождения объектов с необязательными параметрами.
+(Object)object;
+(Object)objectWithCount:(int)count;
+(Object)objectFromFile:(NSString *)path;
Можно определить это как:
// No need to release o if fails because its already autoreleased
+(Object)objectFromFile:(NSString *)path {
Object *o = [[[Object alloc] init] autorelease];
if (![o loadFromFile:path]) {
return nil;
}
return o;
}