gpt4 book ai didi

java - 为什么 Objective-C 使用头文件而不是像 Java 那样使用单文件类?

转载 作者:太空狗 更新时间:2023-10-29 23:03:37 27 4
gpt4 key购买 nike

我主要从事 Java 工作,最近正在尝试学习用于 Mac 和 iOS 应用程序开发的 Objective-C。现在,这种语言与我习惯使用的指针、消息等完全不同,但我似乎可以很好地掌握它。这不是一个编码问题,但我宁愿适本地熟悉我正在处理的事情,而不是仅仅知道“它必须是那样的,因为它就是这样”。

为什么 Objective-C 语言需要头文件?它们与 .m 文件分开的实际目的是什么?为什么函数需要在 header 中声明而不是直接实现?它只是那些还没有从旧语言中消失的东西之一,还是与 Java 的单文件类相比有真正的优势?

最佳答案

主要是 .h 文件存在是因为 C 的向下兼容性 - 所有 C 代码也是有效的 Objective-C 代码。 C 编译器一次处理一个文件;每个文件都是独立编译和解析的。 C 编译器“必须”在第一次使用某个符号之前已经看到它的声明。所以,如果你在 B.m 中使用类 A,编译器一定在某个时候看到了 A 的声明;为避免执行类似#include "A.m" 的操作,约定是拆分头文件中的声明和 .c、.m、.cpp... 文件中的实现。

其他语言如Java在编译时会自动扫描B.java同目录下的文件,寻找其他类的声明; C 编译器有点“老”,需要您 #include 所有必要的头文件。

简而言之:主要是历史原因。

关于java - 为什么 Objective-C 使用头文件而不是像 Java 那样使用单文件类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com