我的 iPhone 应用程序非常简单,只有一个视图来处理所有事情,在 viewDidLoad 中我检查是否有网络连接,如果有,我们从网络加载数据,否则我们从本地资源加载。这样就可以正常运行。
//in viewDidOnload
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNetworkChange:)
name:kReachabilityChangedNotification object:nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus status = [reachability currentReachabilityStatus];
if (status == NotReachable) {
//Do something offline
} else {
//Do sometihng on line
}
- (void)handleNetworkChange:(NSNotification *)notice{
NetworkStatus status = [reachability currentReachabilityStatus];
if (status == NotReachable) {
//Change to offline Message
} else {
//Relaunch online application
}
}
为了测试我的handleNetworkChange事件,我关闭了所有蜂窝数据但保留了WiFi。在WiFi范围内启动应用程序,一切都很完美。然后我走出WiFi的范围,但我的handleNetworkChange从未触发(使用uiAlertView进行测试)。在WiFi范围外,我的应用程序可以正常启动离线消息。
我怀疑这是ViewController生命周期的问题,这段代码是否应该放在AppDelegate函数中?也许这是一个更好的设计起点。