iOS编程——预编译命令#include、#import和@class

       #include和#import

       #include和#import都是把包含的头文件的内容整个复制过来,但是他们俩还是有区别的,#import是#include的优化

       在一个程序中,如果用#include把同一个头文件包含了两遍,那么系统就会报错,但是#import不会,原因呢,就要从这两个函数的实现机制来说了,系统每次遇到#include,就会直接把头文件包含的东西复制过来,但是#import他会先检查一下 上面有没有相同的部分,如果有,就不再重复导入。

        总的来说,就是#import解决了#include可能出现的重复导入的问题


       #import和@class

       上面说了,#import是把头文件包含的东西全部复制粘贴过来,那么在你交叉导入的时候,又会发生问题,比如说你定义了两个类,一个是学生,一个是班级,那么班级的属性包含学生,而学生的属性也包含班级,这时候用#import互相导入之后就会出问题。

        而用@class就可以解决这个问题,为什么能解决呢。因为@class只是告诉编译器有这么一个类,具体这个类怎么定义的一无所知

        @class一般用于头文件中需要声明该类的某个实例变量的时候用到,在m文件中还是需要使用#import

         在继承时不能用@class

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值