Я новичок в target c и пытаюсь понять, как/когда вызывается автовыпуск. Я понимаю простой вариант использования:
- (void) foo {
Bar *b = [[[Bar alloc] init] autorelease];
[self doSomething:b];
}
Как насчет следующего случая? Является ли это ошибкой, потому что объект будет немедленно освобожден после выхода из области действия makeBar?
-(Bar*) makeBar
{
return [[[Bar alloc] init] autorelease];
}
Что, если звонящий делает удержание?
Bar *b = [[self makeBar] retain];
Спасибо, -Эрик