可能重复:
@class vs. #import
Cocoa: What's the difference between importing in the header and importing in the main file?
我只是想知道在我们的接口文件中导入头文件和在接口文件中使用@class之间有什么区别?我观察到如果我们在接口文件中导入头文件,我们可以直接创建该类的实例。与导入头文件相反,我们在接口文件中使用@class并在实现文件中导入头?有人可以对此有所了解吗?
答案 0 :(得分:9)
@class只引用该类,而import与它的类具有强绑定 包括类的方法及其实现。@ class也用于规避循环或闭环。@ class指令只是承诺编译器存在一个类,但在导入引用每个成员时不再告诉它类。类的,以便在运行时编译器可以知道。
答案 1 :(得分:1)
使用前向声明和导入仅依赖于实现文件的标头是最佳做法。如果导入头文件,则会为编译器构建依赖关系。假设您在b.h中导入a.h,然后在c.h中导入b.h.现在,当您在a.h中更改某些内容时,编译器还必须重新编译c.m,因为它的依赖项已更改。
如果你是在预编译的头文件(.pch)中添加#define或#import,必须重新编译所有文件。
Objective-C防范多次导入(比较#include),因此您不必检查同一个头文件的多个导入。