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

被折叠的 条评论
为什么被折叠?



