1.#import 会包含这个类的所有信息,包括实体变量和方法,而@class 只是告诉编译器,其后面声明的名称是类的名称,至于这些类是如何定义的,暂时不做考虑。
2.在头文件中,一般只需要知道被引用的类的名称就可以了。不需要知道内部的实例变量和方法,所以在头文件中一般使用@class来声明这个名称是类的名称。而在实现文件里这个引用类的内部的实体变量和方法,所以需要使用#import来引用这个头文件。
3.在编译效率方面的考虑,如果你有100个头文件都#improt了同一个文件,或者这些文件依次引用的,如 A > B, B > C, C> D 这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。@Class 就不会。
4.如果有循环依赖关系,如 A > B, B > A 这样的互相依赖关系,如果使用#import来互相包含,那么就会出现编译错误,如果使用@Class在两个类的头文件中相互声明,则不会出现编译错误。
Objective-c 中#import 和 @class 的区别
最新推荐文章于 2020-07-31 22:17:12 发布