0

我有一个应用程序,在终止时需要同步 sqlite 数据库的内容。
要知道应用程序何时终止,我在应用程序委托的 applicationWillTerminate: 方法中放置了一个断点。但调试器从不进入那里。
我知道终止应用程序的两种方法:

  1. 就像我在 iPhone 中所做的那样:一直触摸应用程序图标,直到它开始颤抖,然后单击“x”;
  2. 停止调试器。

这两种方法都不会导致调试器进入我的应用程序委托的 applicationWillTerminate: 方法。
如果我使用第一种方法,我什至会遇到异常:我在这一行收到 SIGKILL:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

即使没有该信号的处理程序,模拟器似乎也会启动 SIGKILL 。
调用的最后一条消息是 mach_msg_trap。

4

1 回答 1

2

从文档

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

你可能想要applicationWillResignActive:.

于 2012-12-13T12:03:29.277 回答