【问题标题】:Why doesn’t stopping an application in iOS simulator trigger applicationWillTerminate:?为什么在 iOS 模拟器中停止应用程序不会触发 applicationWillTerminate:?
【发布时间】:2012-12-14 07:38:45
【问题描述】:

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

如何测试 applicationWillTerminate: 中的代码?

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

【问题讨论】:

  • 也许杀了它。从 iOS 4 开始,应用程序不会在退出时终止,它们只是暂停。
  • 该方法中的代码应该在applicationDidEnterBackground: - 它有什么作用?
  • 它同步 NSUserDefaults。我也把它放在了applicationDidEnterBackground:

标签: objective-c xcode ios-simulator


【解决方案1】:

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

【讨论】:

  • 很遗憾没有在 iOS 9.1 中开展业务
【解决方案2】:

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

【讨论】:

  • 这对我来说是成功的,尽管在模拟器上双击主页比应有的要困难得多。 90% 的模拟器会在应用程序后台运行。连续两次 ⇧⌘H 要容易得多。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2021-08-08
    • 1970-01-01
    • 2015-09-07
    • 2011-05-01
    相关资源
    最近更新 更多