为什么在Xcode中使用头文件?新手想学习诀窍



我不明白为什么有一个单独的头文件.h用于实例声明和变量声明,然后在类文件.m中编写我的类。

为什么它不喜欢解释语言呢?只需声明一个函数并在需要时引用它。对我来说,这似乎有很多重复的代码,我希望它对我来说有意义

我发现这篇文章在Objective-C中包含头文件的成本,并发现它很有启发性。

这与其说是一条硬性规则,不如说是一种良好的编程实践/标准。当然,您可以在.m文件中进行声明(尝试一下),就像在解释语言中一样,但通常我们不会这样做,因为它没有组织好。

另一个原因是模块化。但这是一条你需要先学习编程基础知识才能钓到的大鱼;)

这与C中的相同,当您想从另一个翻译单元访问一个翻译单位中的某个内容时,必须声明该内容。然后,在链接时,链接器将看到您正在访问在另一个翻译单元中定义的对象的声明,并将其修复,以便您确实跨翻译单元边界使用该对象。

然而,这取决于不同翻译单位的声明是否相同。如果没有头文件,您将不得不在两个TU中以相同的方式编写声明,并且每次在一个TU更改声明时,您都必须在其他TU中更改声明。

标头的存在使得声明可以写一次,然后"包含"在您想要在其中使用项的任何转换单元中,而无需仔细手动同步文件。

其他答案没有提到的一件事是,头文件中定义的方法是公共的。头文件公开了允许其他类使用的接口,而在实现文件内部,您经常会看到以下内容:

@interface MyClass (PrivateAPI)
- (void)myPrivateMethod;
@end
@implementation MyClass
// All of the method implementations.
@end

这样,只有MyClass实现范围内的代码才能真正调用myPrivateMethod。这是封装实践中非常常见和重要的技术。

您可以在其他几个地方包含.h文件,而不必包含.m,这会导致每次都有重复的代码。

总之,通过包含标头(.h),您可以告诉编译器"函数在这里,这是它们的签名"(请参阅此处的关键字?)。通过包含实现(.m),您可以告诉编译器"这是前面定义的函数的代码"。

相关内容

最新更新