objective-c - 为什么当我的应用程序处于后台时,关闭模拟器会使我的应用程序收到SIGTERM?

标签 objective-c ios cocoa-touch memory-management

当我得到这个:

- (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/

相关文章:

objective-c - 一些 ReactiveCocoa 设计模式问题

ios - 呈现和关闭模态视图 Controller

ios - Action Sheet 在 iphone 中有效,但在 ipad 中无效

iphone - 如何检查下载的PNG图像是否损坏?

ios - 如何减少此流代码中的能量影响

ios - 找不到与 coremltools 匹配的分布

objective-c - objective-c 中使用 CBC 模式的 3DES 加密

objective-c - 将值从模态视图传递到选项卡栏 Controller

iphone - 在 iOS4.1 上保存带有照片的地理标签信息

javascript - 获取UIWebView的边框选择矩形