#include和#import
#include和#import都是把包含的头文件的内容整个复制过来,但是他们俩还是有区别的,#import是#include的优化
在一个程序中,如果用#include把同一个头文件包含了两遍,那么系统就会报错,但是#import不会,原因呢,就要从这两个函数的实现机制来说了,系统每次遇到#include,就会直接把头文件包含的东西复制过来,但是#import他会先检查一下 上面有没有相同的部分,如果有,就不再重复导入。
总的来说,就是#import解决了#include可能出现的重复导入的问题
#import和@class
上面说了,#import是把头文件包含的东西全部复制粘贴过来,那么在你交叉导入的时候,又会发生问题,比如说你定义了两个类,一个是学生,一个是班级,那么班级的属性包含学生,而学生的属性也包含班级,这时候用#import互相导入之后就会出问题。
而用@class就可以解决这个问题,为什么能解决呢。因为@class只是告诉编译器有这么一个类,具体这个类怎么定义的一无所知
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import
在继承时不能用@class