1,#include 是c/c++ 里面导入头文件的预处理指令
#include “A.h” 是导入用户自定义的文件,编译器会先在用户目录下查找,再到安装目录下查找,再到系统文件中查找 。
#include <B.h> 是用于对系统自带文件的引用。编译器会在系统目录下查找该文件。
使用#include 要注意处理重复引用的问题。
例如:ClassA 与 ClassB同时引用了ClassC,不做重复引用处理的时候在ClassD中同时引用ClassA,ClassB编译会提示对ClassC重复引用的错误.
我们可以:#ifndef _CLASSC_H
#define _CLASSC_H
#include "ClassC"
#endif
这样处理在编译时就不会有重复引用的错误出现(在objc中#import解决了这个问题,这是它们的区别)
2,#import 是 OC 里面导入头文件的预处理指令
#import“A.h” 是对用户自定义文件的引用。
#import<B.h> 是用于系统文件的引用。
3,@class
主要用于对一个类 的声明,告诉编译器 @class 后面 是一个类名,仅仅 是一个类名 ,告诉编译器这个类 存在, 不要发出警告或者错误。但是里面的实现并不知道, 如果想要知道里面的实现, 还需要在 .m 文件里 #import 该类。这个时候 才包含了这个引用类 的所有信息。
区别:
1,#import #include
他俩的作用 差不多 。 只不是 #import 解决了重复引用的问题。 但是使用 #include 就必须要注意处理 重读引用的问题。
2, #import @class
#import 一个类, 会包含这个类 的 所有信息。 而 @class 只是声明 了一个类, 告诉这个类 是存在的, 但是里面的实现不清楚。
用 @class 的 好处 在于, 减少类与类之间的依赖关系。 如果 A.h 和B.h 都#import了c.h 那么 a 类 如果 修改了 一些东西, A 类 B 类 c 类 都要重新编译, 编译会很慢。 而使用 @class 就不会。 提高编译效率。
所以一般来说,在interface中引用一个类,就用@class,它会把这个类作为一个类型来使用,而在实现这个interface的文件中,如果需要引用这个类的实体变量或者方法之类的,还是需要import这个在@class中声明的类。