Objective c 为什么当我的应用在后台时,关闭模拟器会使我的应用收到SIGTERM?
当我得到这个:Objective c 为什么当我的应用在后台时,关闭模拟器会使我的应用收到SIGTERM?,objective-c,ios,cocoa-touch,memory-management,Objective C,Ios,Cocoa Touch,Memory Management,当我得到这个: - (void)applicationWillResignActive:(UIApplication *)application { - (void)applicationDidBecomeActive:(UIApplication *)application { 我释放所有对象,并使所有计时器失效 当我得到这个: - (void)applicationWillResignActive:(UIApplication *)application { - (void)app
- (void)applicationWillResignActive:(UIApplication *)application {
- (void)applicationDidBecomeActive:(UIApplication *)application {
我释放所有对象,并使所有计时器失效
当我得到这个:
- (void)applicationWillResignActive:(UIApplication *)application {
- (void)applicationDidBecomeActive:(UIApplication *)application {
我重新分配我的所有对象,让我的计时器再次运行
这一切都很好,只是现在如果我把我的程序放在后台,然后我实际上通过关闭IOS模拟器来终止程序,它在第行给出一个SIGTERM信号:
int retVal = UIApplicationMain(argc, argv, nil, nil);
另一方面,如果我关闭IOS模拟器而不首先将其置于后台来终止程序,则不会发出SIGTERM信号
我做错什么了吗
对我来说,这类SIGTERMs的主要原因如下。如果我在终止程序之前释放了我从未拥有或已经释放的任何对象,那么当我终止程序时,我会得到该SIGTERM 我不知道如何从模拟器或调试器获取关于我对哪个对象执行了此操作的信息。但是从SIGTERM得知我已经做了一个无关的发布,这就足以让我通过检查找到它
如果有人知道如何查找在xcode中释放的无关对象,请插话。你没有做错任何事。当你关闭iOS模拟器时,它会发送你的应用程序
SIGTERM
。时期这就是它的工作方式。如果你把应用程序放在前台,它仍然会被杀死,只是不会被SIGTERM
杀死。你的应用程序在后台时仍连接到模拟器;如果没有模拟器,它无法继续存在,并且如果您启动模拟器,它也无法连接到模拟器的另一个实例
如果你不希望你的应用程序接收到
SIGTERM
,不要关闭模拟器。你没有做错任何事。当你关闭iOS模拟器时,它会发送你的应用程序SIGTERM
。时期这就是它的工作方式。如果你把应用程序放在前台,它仍然会被杀死,只是不会被SIGTERM
杀死。你的应用程序在后台时仍连接到模拟器;如果没有模拟器,它无法继续存在,并且如果您启动模拟器,它也无法连接到模拟器的另一个实例
如果不希望应用程序接收到SIGTERM
,请不要关闭模拟器