【问题标题】:Objective-C errors with XcodeXcode 的 Objective-C 错误
【发布时间】:2011-04-04 21:00:09
【问题描述】:

我在我的 Xcode 命令行工具项目中添加了一个简单的类。类如下所示:

#import <Foundation/Foundation.h>

@interface Foo : NSObject {
}
@end

#import "Foo.h"

@implementation Foo
@end

当我在主文件中使用 #import "Foo.h" 引用 Foo.h 时,我会收到所有类型的错误。我添加了 Foundation.frameowork 作为我的框架。

/Developer/SDKs/MacOSX10.6.sdk/System/ 库/框架/Foundation.framework/Headers/ NSObjCRuntime.h:189:1: 错误: 预期标识符或 '(' [3] /Developer/SDKs/MacOSX10.6.sdk/System/ 库/框架/Foundation.framework/Headers/ NSObjCRuntime.h:197:50:错误:未知类型名称“协议”[3]

【问题讨论】:

    标签: objective-c xcode4


    【解决方案1】:

    我猜您可能需要将main.c 重命名为main.m?否则,您可以发布主文件的内容吗?

    【讨论】:

    • 太棒了!有效!谢啦!那么,.c 不起作用但 .m 起作用的原因是什么!
    • 原因很简单:C 和 Objective-C 不是同一种语言。将代码编译为 C 意味着编译器无法理解诸如类之类的 Objective-C 特性。
    • GCC 或您使用的任何编译器都会有根据地猜测您在文件中使用的语言。如果它具有后缀 .c,则假定为 C 而不是 Objective-C。但是,您可以使用编译器标志覆盖。但是,在您的情况下,我认为没有任何理由不使用后缀 .m。
    • 为避免以后出现这种情况,当您创建新项目时,请选择“Foundation”作为类型而不是“C”。这将为您提供一个正确命名的主文件,以及一个已经具有自动释放池的 main() 函数。
    • @Shem Pendley,谢谢!好建议!以后我会记住的,然后选择Foundation而不是C。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多