Speicher: Objekt nicht frei nach view-controller entlassen, mit ARC
Ich habe 2 view-controller,
FirstViewController - > SecondViewController über
[self presentViewController:SVC animated:YES completion:nil];
auf SecondViewContrller wenn ich
[self dismissViewControllerAnimated:YES completion:nil];
Meine Frage ist, Warum die Objekte nicht frei auf secondViewController nachdem ich entlassen, dies viewcontroller. Wie Sie sehen können auf das Diagramm Es gehen nicht nach entlassen. BTW was ist der beste Weg zu lösen/schließen ein ViewController?
[BEARBEITEN]
Ich NSLog eine Nachricht auf dealloc-Methode hinzu, auf jeden VC, Wenn ich beginne, von FVC->SVC->[entlassen SVC]. dies ist meine logs
hast du alloc der viewcontroller richtig. geben Sie Ihren viewcontroller alloc init code
SecondViewController *SVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
Sie implementieren können, die dealloc-Methode hinzu, die in Ihrem zweiten view-controller und setzen Sie einen Haltepunkt in es (oder ein
set property viewcontroller für
Es scheint, dass es nicht ging durch die dealloc-Methode hinzu. Obwohl ich die ARC wird sich darum kümmern. Was soll ich tun, in dealloc?
SecondViewController *SVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
Sie implementieren können, die dealloc-Methode hinzu, die in Ihrem zweiten view-controller und setzen Sie einen Haltepunkt in es (oder ein
NSLog
). ARC bedeutet nicht die sofortige Freigabe.set property viewcontroller für
Es scheint, dass es nicht ging durch die dealloc-Methode hinzu. Obwohl ich die ARC wird sich darum kümmern. Was soll ich tun, in dealloc?
InformationsquelleAutor Bordz | 2013-11-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser kann ziemlich rough stuff. Ich hatte ähnliche Probleme vor. Suchen Sie den code und sehen, ob Sie starke oder falsche Verweise auf Objekte.
Einer meiner top-Fehler (und was ich gesehen habe im internet mehrere hundert mal) sind Delegierte Eigenschaften. Ich schrieb Ihnen, wie
@property (nonatomic, retain) id<protocol>delegate;
für eine Recht lange Zeit, als ich erkannte, dass, wenn ich tun, damit die Delegierten-Objekt nicht freigegeben werden. Um zu wählenassign
in diesem Fall.Hoffe, dass Sie helfen...
InformationsquelleAutor Julian F. Weinert
Ich habe einige der Untersuchung, die diesem Verhalten.
FirstViewController.m
SecondViewController.m
ist ziemlich das gleiche, außer
- und dies ist die Zuteilung dynamics
-dealloc
Methode mit ARC aktiviertDies ist nicht korrekt. Sie müssen nicht auf delloc auf super beim ARC. developer.apple.com/library/mac/documentation/Cocoa/Reference/...
hat Ihr NSlog auf dealloc-Methode hinzu, die auf FirstVC kam?
Nein ist es nicht, denn diese Steuerung ist ein root-controller.
Sorry, ich dachte, ich konnte nicht kompiliert werden mit umgesetzt
-dealloc
MethodeInformationsquelleAutor Eugene Prokoshev
versuchen, diese ...
release
Nachrichten bei Verwendung von ARC.oops, ich verpasste den Begriff ARC , so können editiert Antwort arbeiten ?
InformationsquelleAutor Shaik Riyaz
Nachdem er viele Stunden auf diesem, ich endlich gefunden eine fehlende Stück im puzzle: Nicht nur setzen Sie alle starken Referenzen zu den ViewController auf der null, Sie auch haben, erlöschen alle Timer und bewusst sein, blockieren behalten Zyklen.
Jedes mal, wenn Sie selbst in einen block erstellen Sie eine retain-Zyklus! Stattdessen sollten Sie eine variable deklarieren, wie so
werden und statt der selbst in den block.
InformationsquelleAutor Atomix
Überprüfen Sie alle IBOutlets in Ihrer Anwendung. Möglicherweise gibt es "starke" Eigenschaft zugewiesen haben. Machen Sie zu "schwach". Zum Beispiel, ein IBOulet sollte wie folgt sein:
Überprüfen Sie alle Delegierten (falls vorhanden) in Ihrer Anwendung. Jeder Delegierte sollte wie folgt sein:
Beachten Sie, dass es dauert einige Zeit für die ARC zu erholen Speicher.
InformationsquelleAutor KSR
Timer waren das Problem in meinem Fall. Hinzugefügt timer ungültig zu viewWillDisappear und die view-Controller wurden dann veröffentlicht.
InformationsquelleAutor user3280979