在iOS 9中,以下用于检测通知的代码不会触发选择器方法。在以前的版本(例如8.4)中,它运行得很好。有人知道为什么吗?
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(yourMethod)
name:UIApplicationDidBecomeActiveNotification
object:nil];
- (void)yourMethod {NSLog(@"aaaaaaa");}发布于 2015-11-10 16:15:15
下面的链接可能会帮助你解决问题。
Foundation Release Notes for OS X v10.11
使用"addObserverForName“而不是"addObserver”。
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification
object:nil
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification * Nonnull note) {
[self yourMethod];
}];这将是工作。
发布于 2015-08-31 21:07:25
我也有同样的问题,对我来说,把addObserver代码移到awakeFromNib上是可行的。另一种解决方案可能是向addObserver添加延迟,如下例所示:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
});发布于 2015-08-12 17:25:51
在做一些测试时,我注意到通知实际上是被触发的,尽管不是在启动时(或者至少太早而不能被你的观察者发现)(仅在模拟器上的)。
尝试上下拖动通知中心或上下拖动控制中心,您将看到您的方法实际上将被调用。
我建议在你的应用程序启动时,在iOS 9上手动调用你的方法?
在实际设备上,该方法的调用方式与在iOS 8上相同。
编辑:经过进一步调查,似乎并不是每次在设备上都触发通知:/
https://stackoverflow.com/questions/31785878
复制相似问题