【发布时间】:2011-12-31 19:08:02
【问题描述】:
我已经按照this answer 实现了可达性类。 我有两个不同的问题,希望对您有所帮助...
我已将通知程序放在我的 viewDidLoad 中:
(void)viewDidLoad
{
[super viewDidLoad];
// check for internet connection
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
internetReachable = [Reachability reachabilityForInternetConnection];
[internetReachable startNotifier];
// check if a pathway to a random host exists
hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"];
[hostReachable startNotifier];
}
然后我在 viewDidAppear 中检查互联网连接:
(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
//check connection when access to the view
if (internetActive)
{
[self loadData];
}
else
{
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:@"Internet connection not available" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
}
第一个问题:第一次如何检查互联网连接
我第一次访问视图时,会显示警报,如果互联网连接正常也是如此。我认为这是因为通知者尚未收到有关连接的通知。如何管理?
第二个问题:如果连接状态发生变化(即从不存在变为存在),通知者不会就此提供建议
如果我在没有互联网连接的情况下启动应用程序,警报会正确显示。但是,如果互联网再次可用,则每次我访问视图时都会继续显示警报,因为不会拦截互联网可用性的变化。我认为这是由于在同一线程上执行通知程序。如何实现此连接检查以拦截连接状态变化?
提前致谢,新年快乐, 亚萨
【问题讨论】:
标签: ios connection reachability