Objective-C 类头文件尽量少引入其他头文件--Effective笔记

在Objective-C中类想使用另一个类的东西,需要导入另一个类的头文件

导入方式:

import 建议Objective-C类

include 建议C++或C

import和include在功能上基本一样,唯一的区别是使用import导入的类只会走一次头文件,将头文件里的变量方法等包含进来,而include不会去判断,重复走,包含,导致报重定义错误,引起交叉编译。

不过使用import有两个问题
1,循环依赖
2,编译效率

1,如:A–>B, B–>A这样的相互依赖关系,如果使用#import来相互包含,那么就会出现编译错误
2,如果你有100个头文件都#import了同一个头文件,或者这些文件是依次引用的,如A–>B, B–>C, C–>D这样的引用关系。当最开始的那个头文件有变化的话,后面所有引用它的类都需要重新编译,如果你的类有很多的话,这将耗费大量的时间

这时,可以使用@class,它可以解决这个问题
@class只是告诉编译器,其后面声明的名称是类的名称,我们可以实现类里使用#import,避免上面两个问题

1,因此没有必须使用的理由,别在头文件里使用#import,可以在头文件使用@class声明,在实现文件里使用#import。这样可以降低类之间的耦合.
2,有时无法使用@class声明,比如要声明某个类遵循一项协议。这时,尽量把“该类遵循某协议”的这条声明移至“class-continuation分类”中。如果还不行的话,就把协议单独放在一个头文件中,然后将其引入。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容