您的位置:首页 > 移动开发 > IOS开发

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

2016-03-02 10:17 411 查看
引入头文件时,有两种方法:

一:#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:引入头文件的时机要尽量延后,只在确认需要时才引入,如此可减少使用类时引入头文件的数量


94bc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: