IOS开发#import和#include以及@class的区别
2016-10-18 10:47:09  By: dwtedx

一、#include和@class的区别

1. 一般来说、导入objective c的头文件时用#import、包含c/c 头文件时用#include

2. #import 确定一个文件只能被导入一次、这使你在递归包含中不会出现问题、<标记>、所以、#import比起#include的好处就是不会引起交叉编译


二、#import && #class:

1、import会包含这个类的所有信息、包括实体变量和方法(.h文件中)、而@class只是告诉编译器、其后面声明的名称是类的名称、至于这些类是如何定义的、后面会再告诉你


2、在头文件中、 一般只需要知道被引用的类的名称就可以了、 不需要知道其内部的实体变量和方法、所以在头文件中一般使用@class来声明这个名称是类的名称、 而在实现类里面、因为会用到这个引用类的内部的实体变量和方法、所以需要使用#import来包含这个被引用类的头文件

备注:#import 就是把被引用类的头文件走一遍、即把.h文件里的变量和方法包含进来一次、且仅一次、而@class不用、所以后者编译效率更高

import和include区别


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


4. 如果有循环依赖关系、如:A–>B, B–>A这样的相互依赖关系、如果使用#import来相互包含、那么就会出现编译错误、如果使用@class在两个类的头文件中相互声明、则不会有编译错误出现

备注:实践证明、A,B相互#import不会出现编译错误、因为<标记>处已经说明#import时文件只被导入一次、所以此条不成立


三、总结

1. 如果不是c/c 、尽量用#import

2. 能在实现文件中#import、就不在头文件中#import

3. 能在头文件中@class 实现文件中#import、就不在头文件中#import


若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新资讯、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


猜你喜欢的

快速评论


博文评论

  • 该博文还没有评论、赶快抢沙发吧...
DD记账
top
+