iOS 开发 #import #include @class 的区别

来源:互联网 发布:知行学院教务处登录 编辑:程序博客网 时间:2024/05/17 04:32

1,#include   是c/c++  里面导入头文件的预处理指令

      #include “A.h” 是导入用户自定义的文件,编译器会先在用户目录下查找,再到安装目录下查找,再到系统文件中查找 。

      #include <B.h>  是用于对系统自带文件的引用。编译器会在系统目录下查找该文件。

 使用#include  要注意处理重复引用的问题。

例如:ClassA 与 ClassB同时引用了ClassC,不做重复引用处理的时候在ClassD中同时引用ClassA,ClassB编译会提示对ClassC重复引用的错误.
         我们可以:#ifndef _CLASSC_H
                       #define _CLASSC_H
                       #include "ClassC"
                       #endif
         这样处理在编译时就不会有重复引用的错误出现(在objc中#import解决了这个问题,这是它们的区别)


2,#import  是 OC   里面导入头文件的预处理指令

#import“A.h” 是对用户自定义文件的引用。

#import<B.h>   是用于系统文件的引用。

3,@class    

主要用于对一个类 的声明,告诉编译器  @class  后面 是一个类名,仅仅 是一个类名 ,告诉编译器这个类 存在,  不要发出警告或者错误。但是里面的实现并不知道, 如果想要知道里面的实现,  还需要在 .m  文件里 #import 该类。这个时候 才包含了这个引用类 的所有信息。


区别:

1,#import   #include  

他俩的作用 差不多 。  只不是  #import  解决了重复引用的问题。 但是使用 #include  就必须要注意处理 重读引用的问题。

2, #import   @class

#import  一个类, 会包含这个类 的 所有信息。   而  @class  只是声明 了一个类, 告诉这个类 是存在的, 但是里面的实现不清楚。

用 @class 的 好处 在于, 减少类与类之间的依赖关系。  如果  A.h  和B.h   都#import了c.h   那么  a 类 如果 修改了 一些东西,  A 类 B  类    c  类  都要重新编译, 编译会很慢。  而使用  @class  就不会。  提高编译效率。 

所以一般来说,在interface中引用一个类,就用@class,它会把这个类作为一个类型来使用,而在实现这个interface的文件中,如果需要引用这个类的实体变量或者方法之类的,还是需要import这个在@class中声明的类。  



0 0
原创粉丝点击