标头中的Xcode Forward声明或仅在实现文件中声明

时间:2015-05-08 01:50:48

标签: objective-c import header forward-declaration

如果只在实现文件中导入类,为什么要使用前向声明?

例如,在ViewController.h中

@class AnObject

@interface ViewController : UIViewController
@end
ViewController.m中的

#import AnObject.h

@interface ViewController (){
    AnObject *anObject;
}
@end

编辑:我们可以根据示例删除头文件中的@class AnObject吗?

1 个答案:

答案 0 :(得分:1)

前向声明用于最小化类之间的依赖关系。想象一下,如果你有一个非常大的项目,导入会增长并增加你的代码添加不必要的编译。在标题中使用前向声明会显着缩短编译时间。虽然,新的编译器是如此先进,以至于可能不需要向前声明类。考虑一下C& C ++是在每个CPU周期真正计算到速度的时候标准化的,而且系统内存很小。现在我基本上使用@class指令来保持我的代码更清晰,更统一。