1. #include #import的区别
a)#import指令是Object-C针对#include的改进版本
b) #import确保引用的文件只会被引用一次,这样就不会陷入递归包含的问题中
c) 一般来说,在导入 Objective-C 头文件的时候使用 #import,包含 C 头文件时使用 #include
d)总之#import比起#include的好处就是不会引起交叉编译
2. ”filename”区别
直接在库文件目录中搜索所包含的文件 (直接去系统库搜索)
”filename”在当前目录下搜索所包含的文件,如果没有的话再到库文件目录搜索 (即先在用户目录搜索,找不到再去系统库搜索)
3、@class是用来做类引用的
@class就是告诉编译器有这么一个类,至于类的定义是啥不知道
@class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import
举个例子说明:
在ClassA.h中
#import ClassB.h 相当于#include整个.h头文件。如果有很多.m文件#import ClassA.h,那么编译的时候这些文件也会#import ClassB.h增加了没必要的#import,浪费编译时间。在大型软件中,减少.h文件中的include是非常重要的。
如果
只是@class ClassB 那就没有include ClassB.h。仅需要在需要用到ClassB的ClassA.m文件中 #import ClassB.h
那么什么时候可以用@class呢?
如果ClassA.h中仅需要声明一个ClassB的指针,那么就可以在ClassA.h中声明
@ClassB
...
ClassB *pointer;
网友评论