ios - ViewControllers 什么时候调用 deinit?在移动到后台期间?在暂停期间?

标签 ios swift ios-lifecycle

我知道 ViewController 将在不再需要时调用其 deinit 方法(例如,在 unwind segue 和随后的 dismissal 之后)。

但我想知道 deinit 在应用程序生命周期的上下文中的行为是什么。

我的问题

1) 如果应用程序由于内存限制而被系统终止,何时(哪个应用程序状态为事件/非事件/背景/等)(如果有的话)调用 deinit

2) 如果用户通过最近使用的应用程序屏幕终止了应用程序,则何时(哪个应用程序处于事件状态/非事件状态/背景/等等)(如果有的话)调用 deinit

3) 当(哪个应用程序处于事件状态/非事件状态/背景/等等)时,如果有的话,如果用户接受来电将应用程序移至后台,deinit 会被调用

4) 当(哪个应用程序处于事件状态/非事件状态/背景/等等),如果有的话,如果用户打开另一个应用程序将应用程序移动到后台,deinit 会被调用

最佳答案

当应用程序突然终止时(您的情况 1 或 2),通常不会调用任何代码,包括任何 deinit 代码。不需要 deinit,因为所有应用程序内存都会立即释放。

否则,当不再需要对象时调用deinit,这与外部事件无关,无论应用程序是在前台还是在后台。这仅取决于您作为程序员何时释放对象的所有权(例如,当您弹出导航 Controller 或关闭呈现的 Controller 时)。

关于ios - ViewControllers 什么时候调用 deinit?在移动到后台期间?在暂停期间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967761/

相关文章:

ios - 在 View Controller 生命周期中更新约束的位置

ios - swift 中带有根元素的 Xml 请求 header

ios - 双机器人iOS SDK

ios - 在 iOS 上捕获视频/音频时,如何使用 AVAssetWriter 将音频写入第一帧?

ios - 当用户从任务切换器关闭应用程序时显示(本地)通知

ios - 从我的应用程序打开设置然后处理复出事件

ios - Swift:将 UserDefaults 字典数据检索到标签中

dynamic - swift : Parse subclass dynamic var dont get included when retrieving object

ios - InsertRowsAtIndexPaths 错误 swift

swift - 集合之间的通用迭代