第二篇: 在类的头文件中尽量少引入其他头文件
2015-12-20 12:34
309 查看
第二篇: 在类的头文件中尽量少引入其他头文件
0、介绍
与C和C++一样, Objective-C也使用 “头文件” 与 “实现文件” 来去个代码。Objective-C语言编写”类”的标注方式为: 以类名做文件名, 分别创建两个文件, 头文件后缀用.h, 实现文件后缀用.m。#include 和 #import 的区别, #import 具有防止重复引用的功能。在使用C语言时, 通常适用宏定义防止重复引用。
1、@class ClassName 的使用
头文件中引用在头文件中声明某个类的对象时, 需要告诉编译器此类存在, 但又不需要知道类的全部细节。此时可以使用 “@class ClassName” 告诉编译器。这叫做: “向前声明”。(如果你写的类继承自某个超类, 则必须引入定义那个超类的头文件)
实现文件中引用
在实现文件中则需要引入类的头文件, 因为在实现文件中需要使用类的细节。
注意:
将引入头文件的时机尽量延后, 只有在确有需要时才引入, 这样就可以减少类的使用者所引入头文件数量。以减少程序的编译时间。
2、@class 和协议
同样如果要生命你写的类遵循某个协议, 那么该协议必须有完整定义, 且不能使用向前声明。向前声明只能告诉编译器有某个协议, 而此时编译器却要知道协议中定义的方法。这样, 最好把协议单独放在一个头文件中. 要是把协议放在莫讴歌大得头文件里, 那么只要引入此协议, 就必定引入那个头文件中的全部内容, 这样就会产生相互依赖问题。
然而有些协议, 例如 “委托协议” 就不能单独写一个头文件。在这种情况下, 委托只有与协议委托的类放在一起定义才有意义。此时最好能再实现文件中声明此类实现了该类实现了委托协议, 并把这段实现代码放在”分类”里。这样的话, 只要在实现文件中引入包含委托协议的头文件即可, 而不需要将其放在公共头文件里。
3、注意
每次在头文件中引入其它头文件之前, 都要先问问自己这样做是否有必要. 如果可以向前声明取代引入, 那就不要引入。若因为要实现属性、示例变量或者要遵循协议而必须引入头文件, 则应尽量将其移至”分类”中. 这样做不仅可以缩减编译时间, 而且还能降低彼此依赖程度。若使依赖关系过于复杂, 则会给维护带来麻烦。4、要点
一、除非确实有必要, 否则不要引入头文件。一般来说, 应该在某个类的头文件中使用向前声明, 并在实现文件中引入类的头文件。这样做可以尽量降低类之间的耦合。二、有时候无法使用向前声明, 百日要声明某个类遵循一项协议。这种情况喜爱, 尽量把 该类遵循某项系协议 的声明移至 “分类” 中。如果无法实现, 就把协议单独放在一个头文件中, 然后将其引入。
相关文章推荐
- js实现优酷视频手机电脑自适应
- [Canvas绘图] 第28节 分块治图
- oracle恢复删除的数据
- scala25-CurringCurring(柯里化)
- jquery mobile 移动web(4)
- 关于slmgr命令
- 黑马程序员--C语言自学笔记---08数组
- .msi安装包安装方法(安装错误2503和2502)
- 30天30个Golang程序学习(一):格式化输出
- 第一篇: 了解 Objective-C语言的起源
- 初学unslider
- SizeClass介绍
- BIOS相关
- C和C#的区别
- Linux 文件共享之SMB服务
- 2015.12.20周末
- ruby中的reject和reject!
- 关于del命令
- 思考2015.12.20
- 《JS修炼之道》—— 读后总结