Iphone 目标C:为什么导入头文件时会出现编译错误?

Iphone 目标C:为什么导入头文件时会出现编译错误?,iphone,objective-c,cocoa,cocoa-touch,Iphone,Objective C,Cocoa,Cocoa Touch,我很好奇,为什么仅仅导入头文件就会出现编译器错误。如果我把它注释掉,一切都可以编译——我试图导入UIViewController的类的头/实现在没有任何警告的情况下通过编译器。然而,一旦我把它包括进来,我就会发现很多错误 我试图在自己的代码中使用苹果的可达性应用程序,并通过以下方式: #import "Reachability.h" 我得到了大量的: error: syntax error before 'target' error: syntax error before 'SCNetwor

我很好奇,为什么仅仅导入头文件就会出现编译器错误。如果我把它注释掉,一切都可以编译——我试图导入UIViewController的类的头/实现在没有任何警告的情况下通过编译器。然而,一旦我把它包括进来,我就会发现很多错误

我试图在自己的代码中使用苹果的可达性应用程序,并通过以下方式:

#import "Reachability.h"
我得到了大量的:

error: syntax error before 'target'
error: syntax error before 'SCNetworkReachabilityFlags'
error: syntax error before 'SCNetworkReachabilityRef'
error: syntax error before 'SCNetworkReachabilityRef'
fatal error: method definition not in @implementation context
它主要抱怨:

static void ReachabilityCallback(SCNetworkReachabilityRef target,       SCNetworkReachabilityFlags flags, void *info);
- (BOOL)isNetworkAvailableFlags:(SCNetworkReachabilityFlags *)outFlags;
- (SCNetworkReachabilityRef)reachabilityRefForHostName:(NSString *)hostName;
- (CFRunLoopRef)startListeningForReachabilityChanges:(SCNetworkReachabilityRef)reachability onRunLoop:(CFRunLoopRef)runLoop;

知道为什么只有在我尝试导入头文件时才会发生这种情况吗?

听起来您可能需要这样做

#import <SystemConfiguration/SystemConfiguration.h>
#导入

该错误几乎总是由错误单词前面的单词未定义引起的(在本例中,
SCNetworkReachabilityRef
前面的
目标

因此,您没有定义
SCNetworkReachabilityRef
和(看起来)所有其他
“SC…”
类型

我不确定
SystemConfiguration.h
是否包含在
可达性.h
中(如果您使用的是来自的示例代码)


该代码包括
SystemConfiguration/SCNetworkReachability.h
Reachability.h

在iPhone上,苹果1.5版的Reachability包括

#import <SystemConfiguration/SystemConfiguration.h>
#导入
但您需要在应用程序中导入SystemConfiguration框架。您可以在那里找到它/System/Library/Frameworks/SystemConfiguration.framework