主页按钮上的iOS app dealloc

时间:2015-10-20 05:33:15

标签: ios objective-c memory-management

我没有使用ARC而且对应用程序暂停时我保留的所有对象会发生什么情况感到困惑。

我看过这个帖子,但它没有那么大的帮助:

iPhone. Shouldn't hitting the home button cause UIApplicationDelegate's dealloc to be called

我已经阅读了有关多任务处理的苹果文档,但无法找到有关dealloc的任何信息。

我跑了一些仪器,没有找到任何泄漏,但我不清楚按下停止按钮时会发生什么

所以我的问题是:

1)为什么我的一些dealloc方法没有被调用?例如,我的UIResponder的dealloc没有被调用(当我双击我的iPad上的主页按钮并删除我的应用程序时),我的任何UIViewController对象都没有。

2)当我点击Instruments上的停止按钮时(当它正在运行检查泄漏时),该应用程序处于什么模式? (例如,非活动,背景,暂停....其他什么?)

由于我的思维习惯于C ++的思维方式,而应用程序退出会导致析构函数被调用,因此我很难想象出iOS等价物。

iOS部署目标:8.0

1 个答案:

答案 0 :(得分:2)

  1. 您的应用只是发送到后台。它仍在记忆中。如果用户将您的应用程序重新启动,则它就在它停止的位置。如果因为它不在前台而无缘无故地解除分配将会很糟糕。当用户双击“主页”按钮并删除应用程序时,该应用程序将被严重杀死。见#2。
  2. 当您点击Xcode中的停止按钮(或者用户通过双击主页按钮终止应用程序)时,您的应用程序将被终止。应用程序流程消失了。释放所有内存和其他资源。这是大锤。您的应用终止时没有任何通知。想象一下从命令行执行kill -9
  3. 这些与否使用ARC无关。这与使用Objective-C或C ++或Swift无关。