#include #import @class 讲解

#import是GCC编译器提供的,xcode在编译objective-c、c、c++程序时都会使用它,#import可保证头文件只被包含一次,而不论次命令实际上在那个文件中出现了多少次
C语言使用 #include语句通知编译器应在头文件中查询定义。


#include
        区分 #include <x.h> #include "x.h" 的作用
        #include <x.h>: 它用于对系统自带的头文件的引用,编译器会在系统文件目录下去查找该文件 .
         #include "x.h": 用户自定义的文件用双引号引用,编译器首先会在用户目录下查找,然后到安装目录中查找,最后在系统文件中查找。
 
        在使用 #include 的时候要注意处理重复引用(这也是 objc #include #import 的区别)
        例如: ClassA ClassB 同时引用了 ClassC ,不做重复引用处理的时候在 ClassB 中同时引用 ClassA ClassB 编译会提示对 ClassC 重复引用的错误 .
         我们可以 :#ifndef _CLASSC_H
                       #define _CLASSC_H
                       #include "ClassC"
                       #endif
         这样处理在编译时就不会有重复引用的错误出现(在 objc #import 解决了这个问题,这是它们的区别)
 
#import
         #import 大部分功能和 #include 是一样的,但是他处理了重复引用的问题,我们在引用文件的时候不用再去自己进行重复引用处理 .
 
@class
        主要是用于声明一个类,告诉编译器它后面的名字是一个类的名字,而这个类的定义实现是暂时不用知道的,后面会告诉你 . 也是因为在 @class 仅仅只是声明一个类,所以在后面的实现文件里面是需要去 #import 这个类,这时候才包含了这个被引用的类的所有信息。
 
综上所述 #include #import @class 的区别可以做一下理解:
 
        #include #import 在引用一个类的时候会包含这个类的所有信息包括变量方法等,但是这样做会对编译效率造成影响 . 比如有 100 个类都 #import ClassA ,那么在编译的时候这 100 个类都会去对 ClassA 处理 . 又比如 A B 引用, B C 引用, C D 引用 ..... 此时如果 A 被修改,那么后面的 B C D..... 都需要重新进行编译 . 还有一个用法会引起编译错误的就是在 ClassA #import ClassB ClassB #import ClassA 那么在编译的时候也会出现未知错误。
        所以一般来说,在 interface 中引用一个类,就用 @class ,它会把这个类作为一个类型来使用,而在实现这个 interface 的文件中,如果需要引用这个类的实体变量或者方法之类的,还是需要 import 这个在 @class 中声明的类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr__Hacker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值