iOS: Как проверить, выгружаются ли UIViewControllers? (Swift)
Я используюUISplitViewController
каждый раз, когда я нажимаю на строку в Master VC, я вижу, чтоviewDidLoad()
запускается в Detail VC.
Означает ли это, что я создаю новый экземпляр Detail VC каждый щелчок строки?
Если так, как я могу проверить, что VC Detail выгружается правильно, и что я не просто создаю все новые и новые VC Detail?
Я немного потерян здесь, в Свифте. Ранее я мог NSLog в dealloc () и увидетьUIViewController
правильно разгрузить.
В Swift есть функция deinit, но она никогда не вызывается:
deinit {
println("\(__FILE__.lastPathComponent)) : \(__FUNCTION__)")
NSNotificationCenter.defaultCenter().removeObserver(self)
}
1) Где мне снимать наблюдателей?
2) Когда я смотрю в Навигаторе отладки в Xcode, использование памяти просто продолжает расти и никогда не падает.
Обновлено: Деталь VC вызывается следующим образом: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
}
}
Я не делаю ничего, кроме множества примеров, которые я видел, но я беспокоюсь оdeinit
не вызывать
deinit
вызывается (см. ответ ниже)Мой оригинальный нерабочий код был:
protocol ManageViewDelegate {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
var delegate: ManageViewDelegate? = nil
...
}
Новый рабочий код:
protocol ManageViewDelegate: class {
func pressedButton(sender: AnyObject)
}
class ManageView: UIView {
weak var delegate: ManageViewDelegate? = nil
...
}