2011-10-18 18 views
5

के लिए जाँच करने के लिए गम्यता वर्ग का उपयोग कर दुर्घटनाग्रस्त मैं एक इंटरनेट कनेक्शन के लिए जाँच करने के लिए इस कोड का उपयोग कर रहा हूँ, लेकिन मैं एक दुर्घटना +[Reachability reachabilityForInternetConnection]: unrecognized selector sent to class 0xcbe0c8अनुप्रयोग जब इंटरनेट कनेक्शन

मैं आयात किया है Reachability .h/.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; 
     } 
    } 
} 
+0

नहीं, मैंने '@class Reachability' किया है और मैंने – Jon

+0

आयात किया है हां, आईव ने फाइलों को आयात किया है और मैंने' # आयात "Reachability.h" ' – Jon

+0

किया है, मैंने ऐसा किया 'पहुंच योग्यता * नई पहुंच = [पहुंच योग्यता पहुंचने योग्यता इंटरनेशनल कनेक्शन] पर क्रैशिंग;' – Jon

उत्तर

1

में है सुनिश्चित करें कि आपके Reachability संस्करण पर है: 2.2, हाल ही में बदल अगर आपके 2.2 का उपयोग नहीं है कि thiscrash कारण हो सकता है कुछ चीजें।

यहाँ Reachability.h और Reachability.m

भी की version2.2 के लिंक हैं, यह मदद करता है, तो यह एक ही कार्य के लिए यहाँ मेरे कार्य कोड :.

मेरे appDidFinishLaunching (hostReachable और internetReachable मेरे ऐप प्रतिनिधि के ivars हैं):

//.... 
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]; 
    } 
} 
-1

आप एआरसी बंद कर देना चाहिए। जाओ, चरणों का निर्माण करने के लिए इस कॉल का चयन करें और दाईं तरफ डबल क्लिक करें और लिखें

-fno -objc -arc 

मुझे लगता है कि आप छोड़ भी कोड को बनाए रखने कर सकते हैं।

संबंधित मुद्दे