Ich benutze eine UISplitViewController
jedes Mal, wenn ich auf eine Zeile in der Master-VC klicken Ich kann sehen, dass viewDidLoad()
im Detail VC ausgeführt wird.iOS: Wie überprüft man, ob UIViewControllers entladen? (Swift)
Bedeutet das, ich erstelle eine neue Instanz von Detail VC jede Zeile klicken?
Wenn ja, wie kann ich überprüfen, dass die Detail-VC korrekt entladen wird und ich nicht nur immer mehr neue Detail-VCs erstelle?
Ich bin ein bisschen hier in Swift verloren. Früher konnte ich dealloc() NSLoggen und die UIViewController
korrekt entladen sehen.
ich hier Swift hat eine deinit Funktion aber nie aufgerufen:
deinit {
println("\(__FILE__.lastPathComponent)) : \(__FUNCTION__)")
NSNotificationCenter.defaultCenter().removeObserver(self)
}
1) Wo soll ich meine Beobachter werden zu entfernen?
2) Wenn ich im Debug-Navigator in Xcode nachschaue, steigt die Speicherbelegung immer weiter und nie ab.
Aktualisiert: Detail VC aufgerufen wird, wie folgt:
if segue.identifier == "addEvent" {
if let controller = (segue.destinationViewController as UINavigationController).topViewController as? ManageViewController {
controller.manageEvent = nil
controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
Ich bin anders als viele Beispiele nicht etwas zu tun, die ich je gesehen habe, aber ich mache mir Sorgen um deinit
nicht
genannt werden Aktualisiert: Arbeiten jetzt - Problem war mit Delegierten stoppen deinit
genannt wird (unten Antwort sehen)
Mein ursprünglicher Non-Working-Code war:
protocol ManageViewDelegate {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
var delegate: ManageViewDelegate? = nil
...
}
Neue Arbeitscode:
protocol ManageViewDelegate: class {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
weak var delegate: ManageViewDelegate? = nil
...
}
funktionieren sollte, wenn 'deinit' nicht ist genannt werden, bedeutet, dass die Erinnerung von * etwas * erhalten wird und nicht freigegeben wird. Sie sollten Ihre Frage bearbeiten, um zu zeigen, wie Sie beim Klicken auf jede Zeile auf Detailansicht-Controller wechseln. –
Aktualisiert, und wie markieren Sie bestimmte Wörter wie Sie mit Deinit? – Richard
Sie werden bald lernen, wie man die "Markup" -Funktionen von StackOverflow nutzt (http://stackoverflow.com/editing-help). –