为什么不在iOS模拟器中停止应用程序触发applicationWillTerminate:?

时间:2012-12-29 07:26:48

标签: objective-c xcode ios-simulator

我的AppDelegate applicationWillTerminate:方法中有一些代码,但我不知道如何测试它是否有效。使用Xcode停止模拟器不会触发它。

如何在applicationWillTerminate中测试代码:?

请注意,这是特定于模拟器而非设备。

3 个答案:

答案 0 :(得分:16)

模拟器不发送applicationWillTerminate:,因为跳板没有向您发送终止代码(SIGABRT),LLDB是。要触发这些委托方法,您必须使用主页按钮命令(⌘+⇧+ H),然后拉起多任务抽屉并从那里终止您的应用程序。您的调试会话将立即终止,并且委托方法将成功触发。

答案 1 :(得分:1)

在iOS 9.1(可能之前)中,如果您双击主页并将应用程序向上拖动以使其退出,这似乎只会起作用。从桌面上执行此操作并不会触发此事件,必须在应用程序在模拟器中打开时发生。

enter image description here

答案 2 :(得分:1)

它对我有用的唯一方法是在我完成以下步骤之后:

  1. 编辑目标架构
  2. 选择Run点按
  3. 选择 Wait for the execution to be launched 作为启动选项
  4. 从 Xcode 运行应用
  5. 在模拟器/设备上打开应用
  6. 双击主页按钮
  7. 从后台删除应用

Wait for the execution to be launched