"找不到NSObject的接口声明"?

Dyl*_*eck 12 xcode objective-c ios sparrow-framework

所以我对这个问题进行了一些研究,但我还没有找到类似的东西......

所以我使用Xcode和Sparrow Framework在Obj-C中编写游戏.到目前为止,我一直在模拟器上工作,而且一切都很顺利.但是当我切换到在我的设备上运行它时,我会得到各种错误,应该是标准的,例如"无法找到NSObject的接口声明","未知的类型名称'NSMutableArray'"等我已经有了#在每个班级导入,所以你会认为它不应该发生,对吧?我觉得这只是一两行需要改变的地方 - 但我不知道在哪里或哪里.

如果有人有任何建议,将非常感谢.:)

编辑:这是一个给出错误的.h文件的屏幕截图 - 它似乎只出现在我创建的一些.h文件中.http://i.imgur.com/EuQh4.png

Dan*_*li3 66

这可能是由于不包括UIKit造成的.

将其添加到标题中:

#include <UIKit/UIKit.h>
Run Code Online (Sandbox Code Playgroud)

还要确保将UIKit Framework添加到您的项目中.(目标/构建阶段/链接二进制库/ - 选择添加---添加UIKit.Framework)

  • 似乎新的Xcode默认不包含UIKit框架. (3认同)
  • 是的,这对于Xcode 6和iOS 8+ SDK非常重要. (2认同)

Nic*_*ood 45

听起来你可能在一个头文件中有一个循环引用.

这可能发生在foo.h #imports"bar.h"和bar.h #imports"foo.h"(或者有时它的三个或更多个头文件的链在一个圆圈中相互导入)时会导致虚假错误就像你所看到的一样.

解决方案是尽量避免在.h文件中导入标头,而是在.h文件中使用外部类的@class引用,而是将#imports放在.m文件中.所以不要写:

#import "SomeClass.h"
Run Code Online (Sandbox Code Playgroud)

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

@class SomeClass;
Run Code Online (Sandbox Code Playgroud)

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


小智 7

尝试使用Cocoa或iOS应用程序,确保在您继承NSObject类的类中导入"Foundation/Foundation.h".