为什么我一直收到“某某未声明的”错误消息?

时间:2010-08-25 03:52:59

标签: objective-c oop

这是我第一次使用Objective-C,并且我一直在尝试创建我在其他类的方法中创建的类的对象,但它不起作用。我的意思是,例如,我将有一个主类,其中一个方法做这样的事情:

exampleclass *instance1 = [[exampleclass alloc] init]

它说示例类是未声明的。 exampleclass在另一个文件中,我的主类无法联系它,或者至少这是我认为正在发生的事情。为什么不能找到exampleclass并创建它的实例?

3 个答案:

答案 0 :(得分:4)

您是否在要尝试使用它的源文件中导入了此类的标头?添加如下内容:

#import "exampleclass.h"

在文件顶部,其他标头导入。假设您在课程后命名了文件。

答案 1 :(得分:1)

编译C或Objective-C源文件时,每个.c.m文件都是独立解释的,不知道其他源文件。标头用于描述其他源文件中可以找到的内容(它们声明存在但不包含定义),因此如果您的某个源文件想要使用其他源文件中的内容,则需要确保编译器知道它,这是通过包含描述/声明它的头来完成的。

如果你有一个名为exampleclass.h的头文件,并且这个头包含exampleclass的声明,那么你需要导入这个头来告诉编译器这个类是否存在,否则它会抱怨这是未宣布的。

#import "exampleclass.h"
// now compiler is aware of exampleclass.
...
...

答案 2 :(得分:0)

如果您使用协议,可能会陷入此陷阱,例如......

MyClass* myInstanceOfThatClass = [anotherObject methodX];

如果MyClass是一个协议,你可以输入

id<MyClass>* myInstanceOfThatClass = [anotherObject methodX];

我也是Objective-C的新手,来自Java背景,我一直在努力做强类型的东西,而不是鸭子打字,所以我想我会随着时间的推移看到很多这些问题; - )

罗布。