3

在 iOS 9 中,以下用于检测通知的代码不会触发选择器方法。在以前的版本(例如 8.4)中,它运行良好。有谁知道为什么?

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

...

- (void)applicationDidBecomeActive
{
    NSLog(@"1");
}

AppDelegate.m

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"2");
}
4

1 回答 1

0

我在 AppDelegate 中注册了 UIApplicationDidBecomeActiveNotification:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
  ...
  [[NSNotificationCenter defaultCenter] addObserver: self
                                       selector: @selector(handleDidBecomeActive)
                                           name: UIApplicationDidBecomeActiveNotification
                                         object: nil];
  ...
}

选择器 handleDidBecomeActive 将在启动应用程序开始时直接调用。

-(void)handleDidBecomeActive
{
   NSLog(@"AppDelegate: didBecomeActive");
}

这适用于iOS9。

我试图在稍后创建的类中获取 UIApplicationDidBecomeActiveNotification(连接到 rootViewController)。在这种情况下,不会调用专用选择器。这在 iOS8 中有效。

于 2015-09-19T09:23:58.533 回答