iOS开发在类的头文件中要尽可能少的引入其他头文件

引入头文件时,有两种方法:
一:#import “Test.h”
这种方法可行,但不够优雅,太过冗杂。
二:@class Test.h
这就是向前声明(forward declaring)
三:当你在一个类中需要另一个类时,要就要建立被引用类的指针(头文件),但何时需要却尚不知,例如:

Test.h
#import ...
@interface Test NSObject
{
    Tea *tea;
    Ice *ice;
}
        此时编译器会报错,因为不知道Tea和Ice到底是什么。此时我们可以这样:
Test.h
#import ...
@class Tea
@class Ice
...
                                           ...
        这样就告诉编译器,我声明的是两个类,这个类有没有或者怎么定义的,先不管,等后面需要了再说。也就是说,在引入头
        文件的时候,我们不需要知道被引入类的内部实体变量或者具体方法,此时一般用@class来声明类的名称。而在实现类里边
        ,需要用到被引用类的方法和实体变量,而#import包含了被引用类的所有东西,此时用#import才比较合适。

        再从编译效率来看,如果使用#import “”,那么势必会引入很多不需要的东西,这样累积下去,会大大增加编译时间。而且
        如果存在相互引用的情况,即A.h引用了B.h,B.h又引用了A.h那么会造成"循环引用",编译器在解析其中一个头文件时,会
        发现它引入了另外一个头文件,而那个头文件又返回来引用了当前的,这虽然不会导致死循环,但两个类有一个不能被正确
        编译却是事实,如此一来编译效率就会降低很多。

        所以呢,在可以使用向前引用的情况下,就尽量使用向前引用;除非在在必须要使用#import引用(实现属性、实例变量或者
        遵循协议)时,比如此时我们需要引入某个协议,我们可以把这个协议放进一个单独的类进行引用,不仅有效率,而且易于
        维护。

PS:引入头文件的时机要尽量延后,只在确认需要时才引入,如此可减少使用类时引入头文件的数量
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值