iPhone模拟器和applicationWillTerminate()

11

当我的应用在iPhone模拟器中运行时,委托方法

- (void)applicationWillTerminate:(UIApplication *)application

当我第一次点击 iPhone 模拟器的主页按钮时,只会调用一次该方法。

在按下主页按钮后,再次启动应用程序并点击主页按钮不会调用委托方法。

这里发生了什么?我是否有什么基本误解?

2个回答

24

我猜测它正在被调用,但你可能会感到困惑,因为在模拟器中按下Home按钮后,你已经结束了Xcode中的当前会话。你的applicationWillTerminate:方法中可能有一个NSLog,是吗?一旦你按下Home按钮,NSLog就不再显示在Xcode的运行控制台中。如果你打开/Applications/Console.app,我相信它们会在那里显示出来。


是的,你说得对。在返回主屏幕后,NSLog()函数调用不会再出现了。但是所有从委托中调用的其他函数调用将继续按照惯常方式运行。谢谢! - firstresponder
2
在终止程序并返回Springboard后,Xcode不再关注来自iPhone模拟器的日志输出。除了输出不会进入Xcode的运行日志之外,一切仍然完全正常。 - Lily Ballard
我能区分(由于某个电话而导致应用程序终止并从先前状态恢复)和(应用程序启动)吗? - srikanth rongali

4
- (void)applicationWillTerminate:(UIApplication *)application

当应用程序“终止”时被调用。 如果您正在使用iOS,则除非禁用了应用程序的多任务处理或用户没有“支持多任务处理”的设备,否则在按下主屏幕按钮时应用程序不会终止。

- (void)applicationDidEnterBackground {

现在,当用户按下主页按钮时,会使用此功能。除非(如我之前所说的)您已为您的应用禁用了多任务处理或用户没有“支持多任务处理”的设备。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接