我没有使用 ARC,我对应用暂停时我保留的所有对象会发生什么感到有点困惑。
我看过这个帖子,但没有太大帮助:
iPhone. Shouldn't hitting the home button cause UIApplicationDelegate's dealloc to be called
我已经阅读了有关多任务处理的苹果文档,但找不到任何关于 dealloc 的具体信息。
我运行了仪器,没有发现任何泄漏,但我不清楚按下停止按钮时会发生什么
所以我的问题是:
1) 为什么我的一些 dealloc 方法没有被调用?例如,我的 UIResponder 的 dealloc 没有被调用(当我双击 iPad 上的主页按钮并删除我的应用程序时),我的任何 UIViewController 对象的 dealloc 也没有被调用。
2) 当我按下 Instruments 上的停止按钮时(当它正在运行检查泄漏时),应用程序处于什么模式? (例如不活动、背景、暂停......其他?)
由于我的头脑太习惯了 C++ 的思维方式,即应用程序退出会导致调用析构函数,所以我很难想象 iOS 的等价物。
iOS 部署目标:8.0
最佳答案
- 您的应用只是发送到后台。它仍然在内存中。如果用户重新启动您的应用程序,它就在它停止的地方。如果只是因为它不在前台而无缘无故地释放任何东西,那就太糟糕了。当用户双击主页按钮并删除该应用程序时,该应用程序将被严重杀死。参见#2。
- 当您点击 Xcode 中的停止按钮(或用户通过双击主页按钮终止应用程序)时,您的应用程序将被终止。应用程序进程消失了。释放所有内存和其他资源。这是大锤。您的应用程序已终止,没有任何形式的通知。想象一下从命令行执行
kill -9
。
这些都与是否使用 ARC 无关。这些都与使用 Objective-C、C++ 或 Swift 无关。
关于按下主页按钮时的 iOS 应用程序 dealloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33228733/