Objective c 在接口文件中导入类和转发声明(@class)之间有什么区别?
可能重复:Objective c 在接口文件中导入类和转发声明(@class)之间有什么区别?,objective-c,ios,Objective C,Ios,可能重复: 我只是想知道在接口文件中导入头文件和在接口文件中使用@class有什么区别?我注意到,如果我们在接口文件中导入头文件,我们可以直接创建该类的实例。与导入头文件相反,我们在接口文件中使用@class,在实现文件中导入头文件?有人能解释一下吗?@class只引用该类,而import对它所属的类具有强绑定 包括类的方法及其实现。@类还用于避免循环或闭环。@class指令只是向编译器保证类存在,但是,当导入引用类的每个成员时,不会告诉它更多关于该类的信息,这样编译器在运行时就可以知道。@
我只是想知道在接口文件中导入头文件和在接口文件中使用@class有什么区别?我注意到,如果我们在接口文件中导入头文件,我们可以直接创建该类的实例。与导入头文件相反,我们在接口文件中使用@class,在实现文件中导入头文件?有人能解释一下吗?@class只引用该类,而import对它所属的类具有强绑定
包括类的方法及其实现。@类还用于避免循环或闭环。@class指令只是向编译器保证类存在,但是,当导入引用类的每个成员时,不会告诉它更多关于该类的信息,这样编译器在运行时就可以知道。@class只引用该类,而导入对它所属的类具有强绑定
包括类的方法及其实现。@类还用于避免循环或闭环。@class指令只是向编译器保证类存在,但是,当导入引用了类的每个成员时,不会告诉它更多关于类的信息,这样在运行时编译器就可以知道了。使用前向声明和导入仅在实现文件中依赖的头是最佳做法。如果在头文件中导入,则会为编译器建立依赖关系。假设您在b.h中导入a.h,然后在c.h中导入b.h。现在,当您在a.h中更改某些内容时,编译器还必须重新编译c.m,因为其依赖项已更改 例如,如果在预编译头文件(.pch)中添加#define或#import,则必须重新编译所有文件
Objective-C具有防止多个导入(比较#包含)的功能,因此您不必检查同一头文件的多个导入。使用前向声明并仅在实现文件中导入依赖的头是最佳做法。如果在头文件中导入,则会为编译器建立依赖关系。假设您在b.h中导入a.h,然后在c.h中导入b.h。现在,当您在a.h中更改某些内容时,编译器还必须重新编译c.m,因为其依赖项已更改 例如,如果在预编译头文件(.pch)中添加#define或#import,则必须重新编译所有文件 Objective-C可以防止多次导入(compare#include),因此您不必检查同一头文件的多次导入