【问题标题】:applicationWillTerminate: not being calledapplicationWillTerminate:未被调用
【发布时间】:2011-11-17 00:52:03
【问题描述】:

我正在使用applicationWillTerminate: 来保存一些最后一分钟的东西。但问题是它永远不会被调用。如果我在方法的顶部做这样的事情:NSLog(@"Something"); 它不会被调用,也不会被输出到控制台。

有人知道为什么会这样吗?

【问题讨论】:

    标签: ios cocoa-touch uiapplicationdelegate application-lifecycle


    【解决方案1】:

    来自 Apple 文档:

    对于不支持后台执行或链接到 iOS 3.x 或更早版本的应用程序,当用户退出应用程序时始终调用此方法。 对于支持后台执行的应用程序,一般不会在用户退出应用程序时调用此方法,因为在这种情况下应用程序只是移动到后台。但是,在应用程序在后台运行(未挂起)并且系统出于某种原因需要终止它的情况下,可能会调用此方法。

    如果您的应用启用了后台使用:

    - (void)applicationDidEnterBackground:(UIApplication *)application

    【讨论】:

    • 为什么我的 didEndCustomizingItems 方法也没有被调用,当我将 NSLog 放入其中时它不会输出任何内容。
    • 一个重要的警告:至少在 iOS 6 上,applicationWillTerminate: 被调用 如果用户在应用程序仍在运行时关闭设备电源,则应用程序永远不会被后台处理前景。
    【解决方案2】:

    请改用applicationDidEnterBackground:。在多任务系统中按下主页按钮时应用程序不会终止。

    【讨论】:

    • 不是applicationWillEnterBackground:,那个方法不存在,使用applicationDidEnterBackground:
    • @CocoaFu:谢谢,已修改
    【解决方案3】:

    来自iOS Application Programming Guide 关于核心应用程序设计和应用程序生命周期:

    如果您的应用程序当前处于挂起状态,则不会调用 applicationWillTerminate: 方法。

    如果您链接到 iOS 4.0,您还应该将数据保存在 applicationDidEnterBackground:

    【讨论】:

      【解决方案4】:

      第一步:command + shift + h(双击(tab))

      第 2 步:移动应用顶部(杀死)

      第 3 步:applicationWillTerminate 工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-23
        • 1970-01-01
        相关资源
        最近更新 更多