2015-01-23 4 views
1

Я применил Reachability в своем приложении для проверки подключения к Интернету. Проблема заключается в том, когда я звоню функция Reachability.isConnectedToNetwork() это бросает ошибку EXC_BAD_ACCESS на этой линии if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0Проверка подключения к Интернету на iOS throws error

я сомневаюсь, что проблема с SCNetworkReachabilityGetFlags или withUnsafePointer(&zeroAddress), но не смог отладить, что именно эта проблема.

EDIT

Ниже приведен код, я пытался ...

public class Reachability 
{ 
    public class func isConnectedToNetwork() -> Bool { 

     var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0)) 
     zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress)) 
     zeroAddress.sin_family = sa_family_t(AF_INET) 

     let defaultRouteReachability = withUnsafePointer(&zeroAddress) { 
      SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue() 
     } 

     var flags: SCNetworkReachabilityFlags = 0 
     if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 { 
      return false 
     } 

     let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0 
     let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0 

     return (isReachable && !needsConnection) ? true : false 
    } 
} 
+0

Это, вероятно, поможет нам решить вашу проблему, если вы разместили код вокруг вашего использования 'Reachability' –

+0

@David. Я обновил сообщение с кодом, который я пробовал. –

ответ

0

Попробуйте что-нибудь простое, как это:

#import "Reachability.h" 

- (BOOL)connected 
{ 
    Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus networkStatus = [reachability currentReachabilityStatus]; 
    return networkStatus != NotReachable; 
}