Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ApplicationIdentinterBackground未运行_Ios_Objective C - Fatal编程技术网

Ios ApplicationIdentinterBackground未运行

Ios ApplicationIdentinterBackground未运行,ios,objective-c,Ios,Objective C,我把它放在我的ViewController.m文件中,当我的应用程序进入后台时,NSLog永远不会被调用 有人能解释为什么吗 - (void)applicationDidEnterBackground:(UIApplication *)application { NSLog(@"Application entered background state."); } 这是应用程序的委托方法。将其放入实现uiapplicationelegate协议的对象中,默认情况下,该协议是在启动新项

我把它放在我的ViewController.m文件中,当我的应用程序进入后台时,
NSLog
永远不会被调用

有人能解释为什么吗

- (void)applicationDidEnterBackground:(UIApplication *)application {

    NSLog(@"Application entered background state.");

}

这是应用程序的委托方法。将其放入实现
uiapplicationelegate
协议的对象中,默认情况下,该协议是在启动新项目时为您创建的应用程序的委托类

或者使用通知中心获取切换到后台事件的通知。只需将视图控制器注册为
UIApplicationIdentinterBackgroundNotification
的观察者。它是在进入后台时发送的

例子
如何在委托中从VC调用方法?在我的应用程序进入后台之前,我需要调用一个方法。你可以在应用程序委托中保留对视图控制器的引用,然后直接调用它。@reecon在视图控制器中使用
UIApplicationIdentinterBackgroundNotification
的更新答案比在应用程序委托中保留对控制器的引用要好得多。@rmaddy,我知道,我刚刚意识到这一点并更新了答案。无论如何,这要看情况而定。如果OP有一个单一的视图应用程序,那么它不会有太大的区别。这是所有权的问题。逻辑属于应该知道应用程序在后台运行时应该做什么的类。为什么希望在不是应用程序委托的类中调用
uiapplicationelegate
中的方法?
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(handleDidEnterBackgroundNotification:)
                                             name:UIApplicationDidEnterBackgroundNotification
                                           object:nil];