Проверка ошибки достижимости для типа сети на ios

Я пытаюсь обнаружить сетевое подключение, используя пример кода достижимости яблок, а также этот код ниже.

Reachability *reachability = [Reachability reachabilityForInternetConnection];
    [reachability startNotifier];

    NetworkStatus status = [reachability currentReachabilityStatus];

    if(status == NotReachable) 
    {
        //No internet
    }
    else if (status == ReachableViaWiFi)
    {
        //WiFi
    }
    else if (status == ReachableViaWWAN) 
    {
        //3G
    }

    [reachability stopNotifier];
}

Я также добавил systemConfiguration. framework в мой проект и добавил -fno-objc-arc в исходный код компилятора, чтобы файл достижимости был совместим с ARC, как бы я сейчас ни получал эту ошибку...

 "_SCNetworkReachabilityCreateWithAddress", referenced from:
          +[Reachability reachabilityWithAddress:] in Reachability.o
      "_SCNetworkReachabilityCreateWithName", referenced from:
          +[Reachability reachabilityWithHostName:] in Reachability.o
      "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
          -[Reachability stopNotifier] in Reachability.o
      "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
          -[Reachability startNotifier] in Reachability.o
      "_SCNetworkReachabilitySetCallback", referenced from:
          -[Reachability startNotifier] in Reachability.o
      "_SCNetworkReachabilityGetFlags", referenced from:
          -[Reachability connectionRequired] in Reachability.o
          -[Reachability currentReachabilityStatus] in Reachability.o
    ld: symbol(s) not found for architecture armv7
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

любая помощь будет принята с благодарностью


person C.Johns    schedule 04.05.2012    source источник
comment
возможный дубликат требуется версия Reachability для ARC в iOS5   -  person CodaFi    schedule 04.05.2012


Ответы (1)


Убедитесь, что Reachability.m находится в вашем списке источников компиляции в разделе «Фазы сборки», и запустите снова. Также убедитесь, что класс Reachability не импортирует сам себя и #импортирует свой заголовочный файл. Я бы также проверил, что ваш класс Reachability на самом деле #импортирует структуру SystemConfiguration, поскольку все ваши ошибки основаны на найденных в нем методах.

person CodaFi    schedule 04.05.2012
comment
хорошо, это на этапах сборки, а также есть Imported SystemConfiguration.framework.. однако не совсем уверен, что вы имеете в виду, с h убедитесь, что класс Reachability не #импортирует себя, и что он #импортирует свой заголовочный файл - person C.Johns; 04.05.2012
comment
В Reachability .m это #import reachability.h или .m? - person CodaFi; 04.05.2012
comment
да, я только что проверил, и он дозирует #import файл .h из файла .m. Однако его удаление приводит к большему количеству ошибок. - person C.Johns; 04.05.2012