无法触发 AppDelegate 中可达性的观察者

Posted

技术标签:

【中文标题】无法触发 AppDelegate 中可达性的观察者【英文标题】:Observer for reachability in AppDelegate cannot be triggered 【发布时间】:2012-07-11 18:37:10 【问题描述】:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(myReachabilityDidChangedMethod)
                                             name:kReachabilityChangedNotification
                                           object:nil];
Reachability *reachability;
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];

我的 AppDelegate 中有上述代码块,用于创建可达性观察者,旨在通过应用程序触发 myReachabilityDidChangedMethod。

但是,无法触发位于 AppDelegate 中的 myReachabilityDidChangedMethod,当我打开或关闭我的 wifi 时,我在模拟器和 ipad 上都对其进行了测试,但两者都没有任何响应。

【问题讨论】:

【参考方案1】:

要触发您的方法,您需要发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"kReachabilityChangedNotification" object:nil];

顺便说一句,如果我没记错的话,当你注册你的通知时,kReachabilityChangedNotification 应该写成一个字符串@"kReachabilityChangedNotification"

【讨论】:

Reachability 类本身不应该自动发布通知吗? @Shing,不会的。用户必须在需要时将项目显式添加到通知中。还要确保在应用退出时删除通知。使用此删除所有通知:[[NSNotificationCenter defaultCenter] removeObserver:self]; 或删除特定通知:[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];

以上是关于无法触发 AppDelegate 中可达性的观察者的主要内容,如果未能解决你的问题,请参考以下文章

Swift:执行 Segue 不触发 - 无错误(可达性)

如何在 AppDelegate 中使用 stringByEvaluatingJavaScript

可达性块应用

Apple 可达性未显示警报

iOS 可达性和应用挂起/恢复行为

AFNetworking 可达性 iOS