【问题标题】:iPhone. Shouldn't hitting the home button cause UIApplicationDelegate's dealloc to be called苹果手机。不应该点击主页按钮导致 UIApplicationDelegate 的 dealloc 被调用
【发布时间】:2010-04-21 02:02:21
【问题描述】:

我已将 NSLogs 放入我的所有类中,包括我的 UIApplicationDelegate 子类。我很好奇——也有点紧张——为什么当我按下主页按钮时我没有看到它们回响任何东西。我在 XCode 模拟器中运行。

由于 iPhone/iPad 一次运行一个应用程序,所以点击主页按钮不会丢弃正在运行的应用程序的所有痕迹吗?

谢谢,
道格

【问题讨论】:

    标签: iphone ipad dealloc


    【解决方案1】:

    Chuck 是正确的,此时dealloc 无关紧要。如果您想在您的应用即将到期时做某事,请在您的应用委托类中实现:

    - (void)applicationWillTerminate:(UIApplication *)application {
       // goodbye...
    }
    

    【讨论】:

      【解决方案2】:

      当应用程序终止时,它的内存会被简单地释放。没有调用 Dealloc,它不会通过 go 或收取 200 美元。这是正常的和有意的。

      【讨论】:

      • 谢谢查克。在我给你这个问题的复选标记之前,我有一个密切相关的问题:为什么在通过单击它重新启动我的应用程序时,我没有看到我的类初始化方法触发(这也是 NSlog-ing)?就好像应用程序首次启动后,alloc/init 和 dealloc 不再起作用。
      • @dugla:nib 中的对象已归档,因此在取消归档时不会经过正常的初始化方法。这只是 nib 中对象的一般属性。框架在启动时创建的其他一些对象也可以使用私有初始化器创建——老实说,我不确定,但这一点也不会让我感到惊讶。如果您谈论的不是我在此提及的内容,您可以尝试询问有关应用启动的其他问题并提供更多详细信息。
      • Chuck,我不是指取消归档基于 nib 的对象。我指的是我实现的自定义类——视图控制器、视图、模型对象等——它们有自己的 alloc/init 和 dealloc 方法。这里没有什么聪明的事情,只是花园里的各种东西。我的问题是为什么我在首次启动时看到非常不同的行为然后在重新启动时。同样,这一切都与 Xcode 模拟器有关。
      • 知道了。事实证明,在应用程序重新启动时,NSlog-ing 没有在模拟器中回显。任何。酷。
      【解决方案3】:

      你应该实现 -(void)applicationWillTerminate:(UIApplication*)application{ } 当用户点击主页按钮时,此方法将被调用。

      【讨论】:

        【解决方案4】:

        您可能还想考虑已宣布的额外多任务支持。显然,细节仍在 NDA 中,但推送 Home 并不一定会停止您的应用。

        并考虑一下您的应用可能已经被快速终止的各种情况(例如,如果有来电并且系统内存不足)。使用应用程序生命周期消息进行清理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多