向前引用(@class XX)与#直接导入头文件(import "XX.h")区别
来源:互联网 发布:素描透视原理讲解知乎 编辑:程序博客网 时间:2024/05/04 15:55
一 什么是向前引用
向前引用,就是将引入头文件的时间尽量延后,只在确有需要时才引入,这样就可用减少类的使用者所需要引入的头文件数量。
二 例子
例如A类中定义B类的属性,则需要在B类里面引入A类的头文件。
常见方法为
import “A.h”
由于在编译 B 类的文件时,不需要知道A类的全部细节(A 类中的方法),若使用 #import “A.h” 则必须知道A.h的全部细节,而Person类中只需要知道类名A就可以了,可用通过以下方式告诉编译器@class A;这种方式娇 向前声明 (forward declaring)
三 向前声明解决的问题
向前声明解决了两个类互相引用的问题。
假如A类中,需要添加B 属性,如果使用使用#import “B.h”则会导致循环引用,当解析到B.h文件时,编译器会发现它引入A.h头文件,编译器在引入A.h头文件时,A.h头文件反过头来引用B.h头文件,造成循环引用,虽然
不会造成系统错误,但必然会造成一方无法正确编译
四 总结
向前声明可用降低编译时间,除非必要,则可以使用向前申明,并在实现文件中映入头文件,这样做可用尽量降低类之间的耦合
0 0
- 向前引用(@class XX)与#直接导入头文件(import "XX.h")区别
- xcode import<xx/xx.h> 头文件报错
- xcode import<xx/xx.h> 头文件报错
- import<xx/xxx.h> 头文件报错
- 谈一谈头文件引用(#include,#import,@import,@class)
- Python中“xx+=xx”与“xx=xx+xx”的区别
- #include、#import与@class的使用与头文件循环引用问题
- Thinking in Java读书笔记之Class.forName("XX")与XX.class这两种方式获得Class对象的区别
- Class.forName(xxx.xx.xx) 和newInstance区别
- Class.forName(xxx.xx.xx)
- Class.forName(xxx.xx.xx)
- Class.forName(xxx.xx.xx)
- IOS开发技术之──头文件引用(@class/#import/#include)
- IOS开发技术之──头文件引用(@class/#import/#include)
- IOS开发技术之──头文件引用(@class/#import/#include)
- IOS开发技术之──头文件引用(@class/#import/#include)
- IOS开发技术之──头文件引用(@class/#import/#include)
- XX区别
- Android异常——常见的RunTimeException
- SAP呆滞库存的计算
- GDI 字体 设备上下文 绘图
- VC++调用C#生成DLL的两种方法!
- Java 面向对象
- 向前引用(@class XX)与#直接导入头文件(import "XX.h")区别
- Uva1572——Self-Assembly
- 【机房个人重构】数据库设计之概念模型
- 新型PID控制及其应用(三)
- 筛选法求素数和康托展开
- SAP 库存关联表信息
- Android中Loader及LoaderManager的使用
- Android调用拍照和本地相册并上传给服务器
- Asmcmd 详解