Es gibt viele Fälle, in denen man eine Instanz zuweist und sie sofort wieder freigibt, nachdem sie einer anderen Instanz zugewiesen wurde, die sie intern speichert.Ist es besser, gleich danach zu autorelease oder release?
Zum Beispiel
UIView *view = [[UIView alloc] initWithFrame...]; [self addSubView:view]; [view release];
Ich habe gehört, haben die Menschen darauf hindeutet, dass wir mit Autorelease gehen, anstatt Release direkt nach.
So die oben wird:
UIView *view = [[[UIView alloc] initWithFrame...] autorelease]; [self addSubView:view];
Was hier die beste Praxis ist? Vor-und Nachteile?
+1. Autorelease bekommt eine Menge Flak-Over-Performance (Flak habe ich selten mit Zahlen in normalen, nicht-großen Loop-Code gesichert gesehen), aber Autorelease spart auch viele Lecks, wenn Code überarbeitet wird. Ich benutze Release häufiger in Low-Level-Routinen, da ich nicht weiß, ob sie in einer großen Schleife auf einer höheren Ebene aufgerufen werden. Wenn Sie jedoch Release verwenden, müssen Sie die Variable unmittelbar danach auf Null setzen, wenn die Variable weiterhin im Gültigkeitsbereich ist. Niemals ein Objekt loslassen, aber immer noch einen Zeiger darauf haben. –