Używam UISplitViewController
za każdym razem, gdy klikam wiersz w Master VC Widzę, że viewDidLoad()
jest uruchamiany w VC szczegółów.iOS: Jak sprawdzić, czy sterowniki UIViewControllers są rozładowywane? (Swift)
Czy to oznacza, że tworzę nowe wystąpienie detalu VC w każdym wierszu?
Jeśli tak, to w jaki sposób mogę sprawdzić, czy VC szczegółów są prawidłowo rozładowywane i czy nie tylko tworzę coraz więcej nowych szczegółowych VC?
Jestem trochę zagubiony w Swift. Wcześniej mogłem NSLog w dealloc() i zobacz prawidłowo rozładunek UIViewController
.
I tutaj Swift posiada funkcję deinit ale to nigdy nie nazywa się:
deinit {
println("\(__FILE__.lastPathComponent)) : \(__FUNCTION__)")
NSNotificationCenter.defaultCenter().removeObserver(self)
}
1) Gdzie należy być usunięcie moich obserwatorów?
2) Kiedy patrzę w nawigatorze debugowania w Xcode, zużycie pamięci stale rośnie i nigdy nie spada.
Aktualizacja: Szczegóły VC jest nazywany następująco:
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
}
}
Nie robię niczego innego niż wiele przykładów widziałem, ale jestem zaniepokojony deinit
nie miano
aktualizacja: Działa teraz - problem był z delegatem zatrzymanie deinit
jest o nazwie (patrz poniżej odpowiedzi)
Mój oryginalny kod nieprodukcyjnym było:
protocol ManageViewDelegate {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
var delegate: ManageViewDelegate? = nil
...
}
kod Nowa robocza:
protocol ManageViewDelegate: class {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
weak var delegate: ManageViewDelegate? = nil
...
}
jeśli nie jest 'deinit' będąc wywoływanym, oznacza to, że pamięć jest zatrzymywana przez * coś * i nie jest uwalniana. Powinieneś edytować swoje pytanie, aby pokazać, jak przełączasz kontrolery widoku szczegółowego po kliknięciu każdego wiersza. –
Zaktualizowany i jak można wyróżnić niektóre słowa, tak jak w przypadku deinit? – Richard
Wkrótce dowiesz się, jak korzystać z funkcji znaczników "StackOverflow" (http://stackoverflow.com/editing-help). –