iOS开发在类的头文件中要尽可能少的引入其他头文件
2016-03-02 10:17
411 查看
引入头文件时,有两种方法:
一:#import “Test.h”
这种方法可行,但不够优雅,太过冗杂。
二:@class Test.h
这就是向前声明(forward declaring)
三:当你在一个类中需要另一个类时,要就要建立被引用类的指针(头文件),但何时需要却尚不知,例如:
94bc
一:#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
相关文章推荐
- iOS多线程开发简介
- iOS--Bundle的新建与使用
- iOS 支付宝支付
- iOS中按钮边框及文字对齐设置
- iOS开发设计模式之单例设计模式
- Missing iOS Distribution signing identity
- iOS--CFMessagePort实现进程间通信
- IOS 第三方库----常用第三方库
- iOS---圆角这个可恶的帧数杀手
- ios tableview iOS: TableView如何刷新指定的cell 或section
- IOS--延迟加载
- PHP以及js识别android/ios系统代码参考
- iOS 基础概念入门
- 内存管理——ios工程图片资源
- iOS金额输入小数点后两位限制
- ios 表单上传图片和参数的2种方法
- iOS App中调用相册中图片及获取最近的一张图片的方法
- 忘记NSURLConnection,拥抱NSURLSession吧
- iOS音视频开发时候使用FFMpeg
- iOS实现代码只执行一次