#import和#include的区别
在我们的代码中,如果两次#include同一个文件的话,会报错,因为#include相当于是拷贝头文件中的声明内容,所以会报重复定义的错误;而@import则不会,它会做一次判断,如果已经导入就不导入了,所以可以解决重复导入的问题。
#import和@class的区别
#import导入会包含这个类的所有信息,包括属性,方法,而@class只是告诉编译器,其声明的名称是类名,至于这个类如何定义,先不考虑。只是为了编译通过,后面要使用这个类的属性方法的时候,还要#import这个类的头文件。
效率方面,@class高。比如你有1000个头文件都#import了同一个文件,或者这行文件是依次引用,A->B,B->C,C->D,这样的关系,当最开始的那个头文件有变化的话,后面所有应用它的类都要重新编译,这样将耗费大量时间。@class则不会。
相互引用方面,如A->B,B->A,这样的相互依赖关系,如果用#import,那么会出现编译错误,要使用@class。