这是我第一次使用Objective-C,并且我一直在尝试创建我在其他类的方法中创建的类的对象,但它不起作用。我的意思是,例如,我将有一个主类,其中一个方法做这样的事情:
exampleclass *instance1 = [[exampleclass alloc] init]
它说示例类是未声明的。 exampleclass在另一个文件中,我的主类无法联系它,或者至少这是我认为正在发生的事情。为什么不能找到exampleclass并创建它的实例?
答案 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背景,我一直在努力做强类型的东西,而不是鸭子打字,所以我想我会随着时间的推移看到很多这些问题; - )
罗布。