我的 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 函数中?可能这是一个更好的设计开始。