所以我对这个问题进行了一些研究,但我还没有找到类似的东西......
所以我使用Xcode和Sparrow Framework在Obj-C中编写游戏。到目前为止,我一直在模拟器上工作,而且一切都很顺利。但是,当我切换到在我的设备上运行它时,我会得到各种错误,这些错误应该是标准的,例如: “无法找到NSObject的接口声明”,“未知的类型名称'NSMutableArray'”等等。我已经在每个类中都有#import,所以你会认为它不应该发生,对吧?我觉得这只是一两行需要改变的地方 - 但我不知道是什么或哪里。
如果有人有任何建议,我们将非常感激。 :)
编辑:这是一个给出错误的.h文件的屏幕截图 - 它似乎只出现在我创建的一些.h文件中。 http://i.imgur.com/EuQh4.png
答案 0 :(得分:66)
这可能是由于不包括UIKit造成的。
将此添加到标题中:
#include <UIKit/UIKit.h>
还要确保将UIKit Framework添加到项目中。 (目标/构建阶段/链接二进制库/ - 选择添加---添加UIKit.Framework)
答案 1 :(得分:45)
听起来你的一个头文件中可能有一个循环引用。
这可能发生在foo.h #imports“bar.h”和bar.h #imports“foo.h”(或者有时它的三个或更多个头文件链在一个圆圈中互相导入)并且它导致像你所看到的那样虚假的错误。
解决方案是尽量避免在.h文件中导入标头,而是在.h文件中对外部类使用@class引用,而是将#imports放在.m文件中。所以不要写:
#import "SomeClass.h"
在你的.h文件中,只要有可能就把:
@class SomeClass;
在.h文件中,将#import语句放在.m文件中。
答案 2 :(得分:7)
尝试使用Cocoa或iOS应用程序,确保导入&#34; Foundation / Foundation.h&#34;在您继承NSObject类的类中。
答案 3 :(得分:4)
尝试删除项目的派生数据。您可以通过组织者在项目下完成此操作。您可能有一个损坏的预编译头。
答案 4 :(得分:2)
我遇到了类似的错误,当我注意到我做了一些非常愚蠢的事情时解决了它。
在我的foo.m
文件中,我忘记了#import "foo.h"
添加导入行时错误得到修复。
答案 5 :(得分:0)
确保您不使用已经使用的类名。当我命名我的一个类“信号”时,我遇到了同样的问题,这已经是基金会的一部分。
答案 6 :(得分:0)
另外,请确保您没有包含.cpp
或.c
文件中的Objective-C文件。
示例:PhotoManager.mm
可能包含Objective-C对PhotoObject.h
/ PhotoObject.mm
中的头文件。
然后,如果MyAwesomeCppFile.cpp
包含PhotoManager.h
,则突然PhotoObject.h
不知道基本的Objective-C类和关键字。
如果您可以使用#ifdef __OBJC__
,则可以使用.cpp
。
否则,请在文件的属性面板中将Objective-C++ Source
文件类型指定为AVAILABLECARET
(右上方窗口控件=&gt;“身份和类型”)