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