невозможно использовать функциональность достижимости цели C

Я использую XCode 4.3 и пытаюсь проверить, есть ли у пользователя подключение к Интернету.

Я использую функции доступности, предоставляемые Apple, но когда я создаю экземпляр с помощью этой строки

 Reachability *curReach= [Reachability reachabilityWithHostName:@"http://www.google.com"];

Я получаю следующие ошибки:

"_OBJC_CLASS_$_Reachability", referenced from:
      objc-class-ref in classfile.m

и

ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я включил доступность.h и .m, а в свои файлы .h и .m добавил следующее:

#import <SystemConfiguration/SystemConfiguration.h>
#import <Foundation/Foundation.h>
#import <CoreFoundation/CoreFoundation.h>

#include <netinet/in.h>
#import "Reachability.h"

#import <sys/socket.h>
#import <netinet/in.h>
#import <netinet6/in6.h>
#import <arpa/inet.h>
#import <ifaddrs.h>
#import <netdb.h>

любая причина, почему я получаю эту ошибку?


person user1051935    schedule 02.04.2012    source источник
comment
Разве это не пример кода от Apple? Я думаю, что вместо этого вы ищете эту структуру: ‹SystemConfiguration/SCNetworkReachability.h›   -  person onnoweb    schedule 02.04.2012
comment
Я добавил ‹SystemConfiguration/SCNetworkReachability.h› все те же ошибки   -  person user1051935    schedule 02.04.2012


Ответы (1)


Возможно, вы слишком сильно сократили сообщение об ошибке, но оно выглядит как ошибка времени компоновки, предупреждающая вас о том, что класс Reachability не является частью вашего окончательного двоичного файла, несмотря на то, что интерфейс был виден во время сборки.

Таким образом, либо вы используете статическую библиотеку для кода достижимости и создали ее для ARM (т. е. фактическое развертывание устройства), либо вы забыли включить Apple Reachability.m в свою цель. Возможно, самый простой способ проверить последнее — включить правую панель, выбрать Reachability.m и найти подходящую галочку под заголовком «Целевое членство».

person Tommy    schedule 02.04.2012
comment
Я проверил цели, и когда я добавил в свою цельreachability.m, количество ошибок увеличилось до 10 ошибок, все в файлеreachability.mи все, что связано с ARC и (я полагаю) с вещами, связанными с предыдущими версиями XCode (я не конечно, так как я новичок в разработке iOS). безопасно ли играть в файлreachability.m? - person user1051935; 02.04.2012
comment
Так и должно быть, иreachability.m определенно не настроен для ARC, как написано, хотя может быть проще следовать совету в stackoverflow.com/questions/6646052/ и отключите ARC только для этого одного исходного файла. - person Tommy; 02.04.2012