Мне просто интересно, если это правильно, или плохая практика? (т. е. с помощью метода класса для размещения/инициализации экземпляра)? Также я прав, думая, что я должен освободить экземпляр в main(), поскольку это единственное место, где у меня есть доступ к указателю экземпляра?Выделение объектов из метода класса?
// IMPLEMENTATION
+(id) newData {
DataPoint *myNewData;
myNewData = [[DataPoint alloc] init];
return myNewData;
}
.
// MAIN
DataPoint *myData;
myData = [DataPoint newData];
... stuff
[myData release];
EDIT:
Также следует
myNewData = [[DataPoint alloc] init];
быть (или это не имеет значения)
myNewData = [[self alloc] init];
EDIT_002:
Странно, когда я добавляю autorelease Я получаю ...
EDIT_003:
Делонг @ Dave, один последний вопрос, что ваше высказывание является его perferable к:
+(id) dataPoint {
return [[[self alloc] init] autorelease];
}
вместо (где вы бы выпустить в основной)
+(id) new {
return [[self alloc] init];
}
ура гари
фрагменты авторезиста в коде выше (и в ответах) могут (и должны) быть удалены в коде ARC. – Snowcrash