向前引用(@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
原创粉丝点击