Ich bin neu zu objektiven c und versuche zu verstehen, wie/wann Autorelease aufgerufen wird. Ich verstehe den einfachen Anwendungsfall:Ist die automatische Freigabe eines Fehlers in Ziel c?
- (void) foo {
Bar *b = [[[Bar alloc] init] autorelease];
[self doSomething:b];
}
Was ist mit diesem nächsten Fall - das ist ein Fehler, weil das Objekt unmittelbar nach dem Verlassen des Umfangs der makeBar veröffentlicht?
-(Bar*) makeBar
{
return [[[Bar alloc] init] autorelease];
}
Was ist, wenn der Anrufer eine Rücklage hält?
Bar *b = [[self makeBar] retain];
Danke, -Eric
Der Inhalt dieser Frage und die zwei Antworten unten sollten in der Liste der erforderlichen Literatur für die neuen ObjC – ckhan