#import和#include的区别,@class代表什么?


2016年11月20日星期日


  • 1.一般来说,导入oc的头文件时用#import,包含c/c++头文件时用#include.
  • 2.#import确定一个文件只能被导入一次,这使你在递归包含中不会出现问题。(import比起include的好处就是不会引起交叉编译)

  • 1.import会包含这个类的所有信息,包括实体变量和方法(.h文件中),而@class只是给编译器说,这个东西在后面是有的,我这里不想声明,只是给你说,在后面有,你只管用,不要警告和报错。

  • 2.在头文件中,一般只需要知道被引用的类的名称就可以了。 不需要知道其内部的实体变量和方法,所以在头文件中,一般使用@class来声明这个名称是类的名称。而在实现类里面,因为会用到这个引用类的内部的实体变量和方法,所以需要使用#import来包含这个被引用类的头文件。(import就是把被引用类的头文件走一遍,既把.h文件里的变量和方法包含进来一次,且仅一次,而@class不用,所以后者的辨析效率更高。)

  • 3.在编译效率方面考虑,如果你有100个头文件都#Import了同一个头文件,或者这些文件是一次引用的,如A->B,B->C,C->D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间。而用@class则不会。

总结:

  • 如果不是c/c++,尽量用import.
  • 能在实现文件中#import,就不在头文件中#import.
  • 能在头文件中@class+在实现文件中#import,就不在头文件中#import.

参考自:<a href= "http://blog.sina.com.cn/s/blog_71715bf80101a8t8.html">IOS-Coding</a>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.#import是oc语言包含类指令,包含类的所有信息,包括属性和方法2.#include是c语言包含头文件指令...
    西门丨不吹雪阅读 226评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,087评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,803评论 18 399
  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 1,287评论 0 2
  • 我感觉我好像沉沦了!我一开始就没觉得
    南伯爵的猫阅读 135评论 0 0