Es gibt viele Objekte in jeder iPhone-App, die ewig leben werden, bis die App stirbt. Das sind: Anwendungsdelegierter, Fenster, Haupt-View-Controller, eventuell Navigations- oder Tab-Controller und alle Objekte darin. Warum um alles in der Welt sollte ich sie freigeben, kurz bevor ich aufhöre, wertvolle CPU-Zyklen zu verbrauchen? Soweit ich verstehe, werden Apps Prozess beendet werden, so dass es Heap, konsistent oder nicht wird auch weg sein.
Warum sollte ich sie also freigeben? Apples Entwicklungshandbücher bestehen darauf, wie im folgenden Codebeispiel (aus Leitfaden zur iPhone-Entwicklung ). Es ist nur der erste Ort, an dem ich die Suche nach einem Wort gefunden habe dealloc in der Bibliothek.
@implementation HelloWorldAppDelegate
@synthesize window;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
MyView *view = [[MyView alloc] initWithFrame:[window frame]];
[window addSubview:view];
[view release];
[window makeKeyAndVisible];
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
Aus dem Abschnitt "Diskussionen" auf NHObject-dealloc Methode:
Beachten Sie, dass bei der Beendigung einer Anwendung die Objekte darf nicht Es ist effizienter, dem Betriebssystem zu erlauben, die Ressourcen zu bereinigen, als alle Speicherverwaltungsmethoden aufzurufen. Aus diesem und anderen Gründen sollten Sie knappe Ressourcen nicht in dealloc
Aber dealloc Methode im obigen Beispiel wird in der aktuellen Implementierung aufgerufen, wenn Ihre Anwendung schnell genug ist, um innerhalb von 15 Sekunden auf applicationWillTerminate zu reagieren.
Also noch einmal. Sollte ich vermeiden, schreiben dealloc Methode oben für app beenden Geschwindigkeit oder gibt es irgendwelche Probleme mit solchen Ansatz?