Nehmen wir an, ich habe einen View-Controller A (Unterklasse von UIViewController), der eine Schaltfläche hat, und wenn Sie die Schaltfläche drücken, lädt und anzuzeigen View-Controller B (Unterklasse von UIViewController) über ein Segment (also habe ich die Verbindung mit dem Interface Builder hergestellt). Segue-Typ ist Zeigen.Laden Sie einen View-Controller und entfernen Sie dann den vorherigen aus dem Speicher
Wenn B angezeigt wird, werde ich nie wieder zu A zurückkehren, also möchte ich töten, zerstören, zerquetschen, verstümmeln, so dass die wertvollen paar Bytes Speicher für andere Dinge verwendet werden können. Hier
ist der Code für A:
class ViewControllerA: UIViewController {
deinit {
print("I am immortal haha I cannot die!!!")
print("This will not be displayed!!!")
}
}
Hier ist der Code für B ist:
class ViewControllerB: UIViewController {
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
print("Go away old view controller!!!")
appDelegate.window!.rootViewController = self // (1)
}
}
Mein Code bei (1) ersetzt, um die Wurzel-View-Controller des App. Der alte Ansicht-Controller scheint jedoch im Speicher zu verweilen, da die Drucknachricht seines Inhalts nicht angezeigt wird.
Wie kann ich die einfache Aufgabe des Entladens eines nicht benötigten View-Controllers und seiner Ansicht durchführen? Vielen Dank