温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

谈谈两种引用方式#import和@class使用区别

发布时间:2020-07-10 09:28:04 来源:网络 阅读:320 作者:yulongsheng 栏目:开发技术

在.h和.m文件中,什么时候才用#import,什么时候采用@class呢?先来看看两者有啥不同。

 

区别一 :从包含的内容来看。

当使用#import的时候,它会包含这个类的所有信息,如属性,方法等。而@class则只是告诉编译器,其后面跟着的是类的名字,至于后面如何定义的,暂时不需要知道。在.h文件中,一般只需要知道类的名称就可以了,所以一般使用@class来引入这个类。 而在具体的实现类.m文件里面,我们常常会用到类的成员(属性,方法等),因此就需要使用#import了。 当然.h文件里面使用它也是完全没问题的。

 

区别二:从编译效率上看。

如果在.h文件中使用#import,假设A,B,C,D四个.h文件。并且四个文件存在依次引用关系,例如A—>B,B—>C, C—>D。当开始的头文件A有变化的时候,后面的所有引用它的类都得重新编译,如果几十个.h文件都存在这种依赖关系,那么重新编译耗时就比较长了,效率也就低了(主要指开发过程中,打好包之后没啥问题)。使用@class则不存在该问题,编译效率上来说是比较高的。

 

比较蛋疼的场景

假如存在循环依赖关系,例如A—>B,B—>A。如果使用#import来相互包含,在编译的时候就会报错,此时使用@class name在两个.h文件中相互声明则不会有这种问题。所以在.h文件中还是比较推荐使用@class,能够避免一些不必要的编译错误。

 

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI