Objective c 未调用UIApplicationIDBecMeactiveNotification

Objective c 未调用UIApplicationIDBecMeactiveNotification,objective-c,nsnotificationcenter,Objective C,Nsnotificationcenter,我在RootViewController的viewDidLoad函数中使用以下代码。 在AppDelegate中,调用了ApplicationIDBecMeactive函数,但RVC似乎没有成为通知,因为没有调用函数someMethod。 有人知道问题出在哪里吗 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMet

我在RootViewController的viewDidLoad函数中使用以下代码。 在AppDelegate中,调用了ApplicationIDBecMeactive函数,但RVC似乎没有成为通知,因为没有调用函数someMethod。 有人知道问题出在哪里吗

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(someMethod:)
                                         name:UIApplicationDidBecomeActiveNotification object:nil];

....

-(void)someMethod:(NSNotification *)notification {
    NSLog(@"OK");
} 

您的问题是,在单个视图控制器应用程序中,只有在发布UIApplicationIDBecMeactiveNotification之后才会调用viewDidLoad。因此,您将在通知第一次出现后进行注册。随后的激活应该被捕获,例如,如果您切换应用程序并返回,但您将错过第一个激活。

如果您要为
UIApplicationIDBecMeactivateNotification添加一个在第一次启动时也会触发的观察者,您应该在函数中添加该观察者

-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项

您的应用程序代理的名称,如下所示:

[[NSNotificationCenter defaultCenter]
addObserver:self.window.rootViewController
选择器:@selector(someMethod:)
名称:UIApplicationIDBeactiveNotification
对象:无];

(在设置根视图控制器之后)


这是因为在应用程序初次启动时,在appDelegate中激活之前调用了didfishwithlaunting。

是否设置了断点来测试addObserver:方法是否真的被调用了?不确定,但我想现在为中的
uiapplicationidbecomeactivationfication
添加一个观察者已经太迟了
viewDidLoad
如果希望在应用程序启动时调用它。还是在启动应用程序后,将其设置为后台并再次激活?是否删除“viewDidUnload”中的观察者?等等?@luyuan:是的,我做了。该函数未被调用。@MattiasWadman:是的,我喜欢在从后台激活时使用它。不,我没有删除viewDidUnload上的observer。请向我们展示有关此方法的调用位置的更多代码这确实是我的问题,但我如何才能捕获第一个UIApplicationIDBecMeactiveNotification?谢谢