我是一个初学者iOS / ObjectiveC编码器,我试图理解一些细节,而不是仅仅笨拙地遵循我看到的示例代码。

我想我在.h文件中得到了前向声明的要点:它告诉编译器指定的类是“稍后定义的播放器”-然后将标头导入.m文件中。

我不明白的是,为什么不只在引用该类的标头中导入该类标头,而不使用向前声明?我对#import的理解是,它不会多次导入标头(就像#include一样-需要if_def东西)。

我有错吗?

最佳答案

使用前向引用的原因之一是编译器的速度。标头可能包含在许多其他文件中,而这些文件可能不需要标头文件中包含的定义。由于预处理器包含了包含文件,因此包含很多包含文件或较大的包含文件会大大增加编译器必须处理的代码行。

您可以通过使用Xcode中的preprocess命令来查看预处理器的输出,从而自己查看。通过在头文件中向前声明类,您将删除头文件中将包含的所有代码。

08-05 23:48
查看更多