Интернет-соединение с использованием утечек SCNetwork - PullRequest
0 голосов
/ 03 октября 2011

Пытаюсь создать простую функцию для получения статуса интернета, но получаю утечки каждый раз, когда я вызываю эту функцию:

+ (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 из SystemConfiguration. Есть идеи?

1 Ответ

1 голос
/ 03 октября 2011

Когда вы закончите с 'достичь', сделайте

CFRelease(reach);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...