Сбой приложения при использовании классов достижимости для проверки подключения к интернету
Я использую этот код для проверки подключения к интернету, но я получаю аварийное сообщение +[Reachability reachabilityForInternetConnection]: unrecognized selector sent to class 0xcbe0c8
Я импортировал достижимость .ч/.m и фреймворк systemconfig. Авария на линии self.internetRechable = [[Reachability reachabilityForInternetConnection] retain];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
self.internetRechable = [[Reachability reachabilityForInternetConnection] retain];
[self.internetRechable startNotifier];
// check if a pathway to a random host exists
self.hostReachable = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[self.hostReachable startNotifier];
- (void) checkNetworkStatus:(NSNotification *)notice
{
// called after network status changes
NetworkStatus internetStatus = [self.internetRechable currentReachabilityStatus];
switch (internetStatus)
{
case NotReachable:
{
NSLog(@"The internet is down.");
// self.internetActive = NO;
break;
}
case ReachableViaWiFi:
{
NSLog(@"The internet is working via WIFI.");
// self.internetActive = YES;
break;
}
case ReachableViaWWAN:
{
NSLog(@"The internet is working via WWAN.");
// self.internetActive = YES;
break;
}
}
NetworkStatus hostStatus = [self.hostReachable currentReachabilityStatus];
switch (hostStatus)
{
case NotReachable:
{
NSLog(@"A gateway to the host server is down.");
// self.hostActive = NO;
break;
}
case ReachableViaWiFi:
{
NSLog(@"A gateway to the host server is working via WIFI.");
// self.hostActive = YES;
break;
}
case ReachableViaWWAN:
{
NSLog(@"A gateway to the host server is working via WWAN.");
// self.hostActive = YES;
break;
}
}
}
2 ответа:
Убедитесь, что ваш
Reachability
находится в версии: 2.2, недавно изменилось несколько вещей, которые могут вызвать эту ошибку, если вы не используете 2.2.Вот ссылки на version2. 2 из достижимость.h и достижимость.m
Также, если это поможет, вот мой рабочий код для этой же задачи:.
В моем
appDidFinishLaunching
(hostReachable
иinternetReachable
являются ивары моего делегата приложения)://.... if ([[Reachability reachabilityWithHostName:@"google.com"] currentReachabilityStatus] == NotReachable) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil]; internetReachable = [[Reachability reachabilityForInternetConnection] retain]; [internetReachable startNotifier]; hostReachable = [[Reachability reachabilityWithHostName:@"google.com"] retain]; [hostReachable startNotifier]; }
Затем обратный вызов:
- (void)checkNetworkStatus:(NSNotification *)notice { NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; switch (internetStatus) { case NotReachable: self.internetActive = NO; break; case ReachableViaWiFi: self.internetActive = YES; break; case ReachableViaWWAN: self.internetActive = YES; break; } NetworkStatus hostStatus = [hostReachable currentReachabilityStatus]; switch (hostStatus) { case NotReachable: self.hostActive = NO; break; case ReachableViaWiFi: self.hostActive = YES; break; case ReachableViaWWAN: self.hostActive = YES; break; } if (internetActive && hostActive) { [self refreshAllData]; } }