2 - 在类的头文件中尽量少引入其它的头文件

为什么在类的头文件要尽量少的引入其它头文件呢?

首先是为了提高封装性,如果引入了其它头文件,那么它们就必须得公开才行,同样的,既然不必要提供的头文件公开了,别人也可以在其它地方引入这些头文件以及调用它们的方法。

再有一个就是能提高项目的编译速度,为什么呢?因为编译器在编译文件的时候,如果引入了其它文件的头文件,那么编译器也会把所引入的各个头文件给编译一遍,明显得花费更多的编译时间。

那么什么时候应该引入其它头文件,什么时候又不应该引入呢,不引入的时候需要用到该类型又该怎么办呢?

先来说一下什么时候应该引入头文件吧:

在需要了解类具体细节,比如属性有哪些,提供的方法有哪些的时候就必须引入头文件,就好比你所写的类是继承某超类,或者你所写的类遵循某协议,都需要把完整的头文件引入。说道遵循协议,如果没必要让其他人知道我所写的类是遵循了某个协议,也就是不想把这个类遵循的协议公开的话,可以把遵循某协议的声明放到.m的“class-continuation”分类中,并且也把引入头文件的代码搬回到.m上。什么时候是有必要公开这个类所遵循某协议呢?比如在其它文件中有一个接口,参数要求是遵循了某协议的类型,正好你所编写的类需要用作参数传入的时候才需要公开,如果不公开的话那么编译器会认定为类型不正确。

再来说一下什么时候不引入头文件而需使用该类型的时候:

在类的头文件只需要知道有这么一个类型的时候,便不需要把头文件引入,但是不引入怎么让编译器知道有这么一个类型呢?

那就需要使用“向前声明”该类,也就是

@class ClassName;

这个“向前声明”还有一个作用就是,能够解决相互循环引入导致无法编译的问题。

在实现文件中,如果要使用该类型对象的接口,那么这时候才需要引入该类型的头文件,总之就是在有必要的时候才把其它的头文件引入。

最后抄一下书本的总结:

除非确有必要,否则不要引入头文件。一般来说,应在某个类的头文件中使用向前声明来提及别的类,并在实现文件中引入那些类的头文件。这样做可以尽量降低类之间的耦合。

有时无法使用向前声明,比如要声明某个类遵循一项协议。这种情况下,尽量把该类遵循某协议的这条声明移至“class-continuation分类”中,如果不行的话,就把该协议单独放在一个头文件中,然后将其引入。

 

转载于:https://www.cnblogs.com/Jk-Chan/p/5275673.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值