C/C++

#include #import的区别 <filen

2018-05-19  本文已影响2人  片片碎

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;

上一篇 下一篇

猜你喜欢

热点阅读