当我得到这个:
- (void)applicationWillResignActive:(UIApplication *)application {
我释放所有对象并使所有计时器无效。
当我得到这个:
- (void)applicationDidBecomeActive:(UIApplication *)application {
我重新分配了所有对象,并使计时器再次运行。
一切正常,除了现在如果我将程序放到后台,然后我实际上通过关闭IOS Simulator来终止程序,它在行上给出了SIGTERM信号:
int retVal = UIApplicationMain(argc, argv, nil, nil);
另一方面,如果我通过关闭IOS Simulator而没有先将其置于后台而终止程序,则它不会发出SIGTERM信号。
难道我做错了什么?
对我而言,导致此类SIGTERM的主要原因如下。如果在终止程序之前释放了从未拥有或尚未释放的任何对象,则在终止程序时会得到该SIGTERM。
我不知道如何从模拟器或调试器获取有关我对哪个对象进行操作的信息。但是从SIGTERM知道我做了一个无关紧要的发布,这足以让我通过检查来查找它。
如果有人知道如何在xcode中查找释放了哪些对象,请发出提示。
最佳答案
你没有做错任何事。当您关闭iOS模拟器时,它会通过发送SIGTERM
杀死您的应用。期。这就是它的工作方式。如果您将应用程序置于前台,它仍然会被杀死,只是不会被SIGTERM
杀死。您的应用程序在后台时仍连接到模拟器。如果没有模拟器,它将无法继续存在,并且如果您启动一个模拟器,它将无法连接到模拟器的另一个实例。
如果您不希望您的应用接收SIGTERM
,请不要关闭模拟器。
关于objective-c - 为什么当我的应用程序处于后台时,关闭模拟器会使我的应用程序收到SIGTERM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7626654/