iOS中include、import、class

#include

  • #include <> : 用于对系统文件的引用,编译器会在系统文件目录下去查找该文件。
  • #include “xx.h”: 用于对用户自定义的文件的引用,编译器首先会去用户目录下查找,然后去安装目录,最后去系统目录查找。

注意: #include: 如果CLass A 导入了Class B, Class B的头文件里又导入了Class A的头文件, 这样会发生循环引用.所以我们尽量不要在.h文件中导入用户自定义的类文件.h (但是如果在.h文件中有代理的话可以在.h中直接导入另一个.h 或者可以把代理单独写一个.h文件)

#import

  • import 的功能和include一样,是将右边的文件拷贝到当前import的位置。为了提高效率,防止重复导入,OC给出了新的预处理指令import
  • import作用:防止重复拷贝

@class

  • 作用
    可以简单的引用一个类
  • 简单使用
  • @class Dog;
  • 仅仅是告诉编译器Dog是一个类,并不会包含Dog这个类的所有内容
  • 具体使用
  • 在.h文件中使用@class引用一个类
  • 在.m文件中使用#import包含这个类的.h文件
  • class和import的区别
  • import是一个预编译指令,他会将""中的文件拷贝到import所在的位置
  • 并且import有一个特点,只有""中的文件发生了变化,那么import就会重新拷贝一次(更新操作)
  • @class 仅仅是告诉编译器,@class后面的名称是一个类,不会做任何拷贝操作
  • 由于@class仅仅是告诉编译器后面的名称是一个类,所以编译器并不知道这个类中有哪些方法和属性,所以在.m中使用这个类时需要import这个类,才能使用

总结

  • 如果都在.h文件中import,假如A拷贝了B,B拷贝了C,如果C被修改了,那么B和A都需要重新拷贝,因为C修改了那么B就会重新拷贝,而B重新拷贝了之后相当于B也被修改了,那么A也需要重新拷贝,也就是说如果都在.h拷贝,只要有间接关系都会重新拷贝
  • 如果在.h中用@class,在.m文件中用import,那么如果一个文件发生了变化,只有和这个文件有直接关系的那个文件才会重新拷贝
  • 所有在.h中用@class可以提升编译效率
  • 如果来个类相互拷贝,例如A拷贝B,B拷贝A,这样就会报错
  • 在.h文件中用@class,在.m中用import
  • 因为如果.h中都有import,那么A拷贝B,B又拷贝A,就形成死循环
  • 如果在.h文件中用@class,那么不会做任何拷贝的操作,而在.m文件中用import只会拷贝对应的文件,并不会形成死循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值