Я пытаюсь понять, что происходит в геттере ниже, это то, что я понимаю до сих пор:
(1) получатель возвращает указатель на объект NSString. (2) объект NSString сохраняется, возможно, потому что мы только что дали указатель на него. (3) авто-релиз? когда это активируется, когда экземпляр PlanetClass освобождается (освобождается)?
// CLASS
@interface PlanetClass : NSObject {
NSString *planetName;
}
- (NSString *)planetName;
- (void)setPlanetName:(NSString *)value;
@end
// GETTER
- (NSString *)planetName{
return[[planetName retain] autorelease];
}
РЕДАКТИРОВАТЬ: Я думаю, что я более смущен относительно причины фактического сохранения и более позднего выпуска. Насколько я понимаю, получатель просто возвратил указатель либо на ноль, либо на уже существующий объект (т. е. был установлен установщиком). Я думаю, что понимаю удержание, поскольку мы выдаем указатель, и нам нужно отслеживать это, но как насчет выпуск, это просто отказоустойчивый случай, который я позже забуду выпустить объект NSString?
Переменная экземпляра planetName также выпущена в моем методе dealloc (см. Ниже). Автозапуск, кажется, делает то же самое, чуть позже, когда пул истощается?
- (void)dealloc {
[planetName release];
[super dealloc];
}
ура -gary-