UITabBarController 和关闭
UITabBarController and dismiss
在每个 UIViewController 中,我都得到了带有简单打印语句的 deinit 函数,它告诉我何时从内存中删除了特定的 UIViewController。
deinit {
print("VIEWCONTROLLER DELETED FROM MEMORY")
}
但是,所有属于 UITabBarController 的 UIViewController 都不会调用 deinit,而且我也不会在控制台中看到打印语句。
除此之外:
里面的代码...
NotificationCenter.default.addObserver(forName: UIApplication.didChangeStatusBarOrientationNotification, object: nil, queue: OperationQueue.main) { (notification) in
print("Device rotated")
}
... 也会在其他选项卡上调用。因此,当设备从 Landscape 切换到 Portrait 时,即使我不在特定代码所在的 UIViewcontroller 中,上面闭包内的所有代码也会执行...奇怪!
这是为什么?
好吧,UITabBarController 正在按预期完美运行。可能是你走错了路。如果你想观察通知,你可以在 UITabBarController 的 class 中观察它,而不是在 UITabBarController 的 ViewController 中观察它。有关详细信息,您可以查看 UITabBarController.
的苹果文档
在每个 UIViewController 中,我都得到了带有简单打印语句的 deinit 函数,它告诉我何时从内存中删除了特定的 UIViewController。
deinit {
print("VIEWCONTROLLER DELETED FROM MEMORY")
}
但是,所有属于 UITabBarController 的 UIViewController 都不会调用 deinit,而且我也不会在控制台中看到打印语句。
除此之外:
里面的代码...
NotificationCenter.default.addObserver(forName: UIApplication.didChangeStatusBarOrientationNotification, object: nil, queue: OperationQueue.main) { (notification) in
print("Device rotated")
}
... 也会在其他选项卡上调用。因此,当设备从 Landscape 切换到 Portrait 时,即使我不在特定代码所在的 UIViewcontroller 中,上面闭包内的所有代码也会执行...奇怪!
这是为什么?
好吧,UITabBarController 正在按预期完美运行。可能是你走错了路。如果你想观察通知,你可以在 UITabBarController 的 class 中观察它,而不是在 UITabBarController 的 ViewController 中观察它。有关详细信息,您可以查看 UITabBarController.
的苹果文档