2011-10-03 114 views
0

试图建立简单的函数来获取互联网的地位,但越来越泄漏我每次调用这个函数:互联网连接状态泄漏

 
+ (BOOL) connectionStatus 
{ 
    BOOL retVal = NO; 
    const char *hostName = [@"google.com" 
          cStringUsingEncoding:NSASCIIStringEncoding]; 


    SCNetworkReachabilityRef reach = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, hostName); // Attempt to ping google.com 
    SCNetworkConnectionFlags flags; 
    SCNetworkReachabilityGetFlags(reach, &flags); // Store reachability flags in the variable, flags. 

    if(kSCNetworkReachabilityFlagsReachable & flags) { 
     // Can be reached using current connection. 
    } 

    if(kSCNetworkReachabilityFlagsConnectionAutomatic & flags) { 
     // Can be reached using current connection, but a connection must be established. (Any traffic to the specific node will initiate the connection) 
    } 

    if(kSCNetworkReachabilityFlagsIsWWAN & flags) { 
     // Can be reached via the carrier network 
    } else { 
     // Cannot be reached using the carrier network 
    } 

    if((kSCNetworkReachabilityFlagsReachable & flags) && !(kSCNetworkReachabilityFlagsIsWWAN & flags)) { 
     // Cannot be reached using the carrier network, but it can be reached. (Therefore the device is using wifi) 
     retVal = YES; 
    } else if (kSCNetworkReachabilityFlagsIsWWAN & flags) { 
     // Using the carrier network 
     retVal = YES; 
    } else { 
     // No connection available. 
    } 

    return retVal; 
} 

仪器显示的泄漏,并始终指向从作为负责任的框架SCNetworkReachabilityGetFlags和SCNetworkReachabilityGetFlags系统配置 。 有什么想法?

回答

1

当你与 '达到' 做做

CFRelease(reach); 
+0

凉爽,无泄漏,谢谢! – Vanya