我正在调试一个iOS应用程序,我需要在一些C ++类中调用一些清理代码(实际上,我只是想要调用它们的析构函数)。当我通过附带设备的XCode运行应用程序,然后按停止按钮停止它时,会调用应用程序委托方法的 none (我正在专门查看applicationWillTerminate
) 。但是,如果我拿起设备并按主页按钮,则会成功呼叫applicationDidEnterBackground
和applicationWillResignActive
。
我做错了什么?我已经尝试删除所有对任何C ++代码的引用,有效地制作了一个空白的iOS应用程序,我根本无法在根视图控制器中调用applicationWillTerminate
,甚至dealloc
。我甚至尝试使用signal()
方法以及SIGABRT,SIGKILL等,并且什么都不做(另外,我无法从C方法调用Objective-C方法)。如何对按下的停止按钮做出反应?
答案 0 :(得分:2)
您没有做错任何事情,当您按下stop
按钮时系统会杀死您的应用。
没有调用方法,因为应用程序刚刚被杀死,当你的应用程序被屏蔽并且系统需要更多内存时也会发生同样的事情。
答案 1 :(得分:1)
为了在应用退出/在后台输入时调用的方法更精确,check this page
就像@rckoenes所说,当你用调试器停止应用程序时,它会杀死它。
如果您的应用具有后台功能(UIApplicationExitsOnSuspend = NO,这是默认模式),当您退出应用时,它将被置于后台而不是终止。