kNetworkReachabilityChanged通知API的通知
问题描述:
在我的项目中,我使用Reachability API。我遵循
Reachability API Documentation给出的代码示例。kNetworkReachabilityChanged通知API的通知
在我的应用程序委托我已经实现的applicationDidFinishLaunching方法如下,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Observe the kNetworkReachabilityChangedNotification. When that notification is posted, the
// method "reachabilityChanged" will be called.
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
hostReach = [[Reachability reachabilityWithHostName: NSLocalizedString(@"SERVICE_HOST_URL", nil)] retain];
[hostReach startNotifier];
[self updateReachabilityStatus:hostReach];
self.rootViewController = [[SearchRootViewController alloc] initWithNibName:@"SearchRootView" bundle:nil];
self.detailViewController = [[SearchDetailViewController alloc] initWithNibName:@"SearchView" bundle:nil];
UINavigationController *rootViewNavigationController = [[UINavigationController alloc] initWithRootViewController:self.rootViewController];
UINavigationController *detailViewnavigationController = [[UINavigationController alloc] initWithRootViewController:self.detailViewController];
self.splitViewController = [[UISplitViewController alloc] init];
self.splitViewController.viewControllers = [NSArray arrayWithObjects:rootViewNavigationController, detailViewnavigationController, nil];
[rootViewNavigationController release];
[detailViewnavigationController release];
self.splitViewController.delegate = self.detailViewController;
[self.detailViewController setLeftViewController:self.rootViewController];
[self.window addSubview:[self.splitViewController view]];
[self.window makeKeyAndVisible];
return YES;
}
当这个kNetworkReachabilityChangedNotification发布?我注意到它不会发布,直到我的detailViewController的视图出现。
但我想知道在视图出现之前的网络状态。所以,需要您的帮助来了解是否有可能?如果是的话,那么怎么样?
感谢名单
答
这可能需要一些时间来确定哪些网络连接可用:你问可达开始生成通知,但随后立即显示您的视图控制器......而你也只能在创建视图控制器后启动可达性通知,所以它是完全可能的发送通知之前您的视图控制器被实例化。
更好的方法是拥有一个可以在尝试建立网络状态时使用的持有视图。