【问题标题】:Objective-C: Why am I getting a compile error when importing a header file?Objective-C:为什么在导入头文件时出现编译错误?
【发布时间】:2010-10-17 23:02:33
【问题描述】:

我很好奇只是导入头文件而导致编译器错误的一些原因。如果我将其注释掉,一切都编译得很好——我试图导入到我的 UIViewController 之一的类的标头/实现通过编译器而没有任何警告。但是,一旦包含它,就会出现大量错误。

我正在尝试在自己的代码中使用 Apple 的 Reachability 应用程序,并执行以下操作:

#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;

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

【问题讨论】:

    标签: iphone objective-c cocoa cocoa-touch


    【解决方案1】:

    在 iPhone 上,Apple 的 Reachability 1.5 版本包括

    #import <SystemConfiguration/SystemConfiguration.h>
    

    但您需要在您的应用中导入 SystemConfiguration 框架。你可以在 /System/Library/Frameworks/SystemConfiguration.framework 那里得到它

    【讨论】:

      【解决方案2】:

      该错误几乎总是由错误词前面的词的非定义引起的(在这种情况下,SCNetworkReachabilityRef 前面是target)。

      因此您还没有定义 SCNetworkReachabilityRef 和(看起来)所有其他 "SC..." 类型。

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

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

      【讨论】:

        【解决方案3】:

        听起来你可能需要

        #import <SystemConfiguration/SystemConfiguration.h>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-11
          • 2020-07-27
          • 2011-07-20
          相关资源
          最近更新 更多