Dan*_*552 14 java objective-c header-files
我主要在Java工作,最近我正在尝试学习用于Mac和iOS应用开发的Objective-C.现在,这种语言与我习惯,指针,消息等完全不同,但我似乎正好接受它.这不是一个编码问题,但我宁愿熟悉我正在处理的事情,而不仅仅是知道"它必须是这样的,因为它就是这样".
为什么Objective-C语言需要头文件?它们与.m文件分开的实际目的是什么?为什么函数需要在头文件中声明而不是刚刚实现?它只是其中一个没有从旧语言中消失的东西,还是与Java的单文件类相比有真正的优势?
And*_*gia 15
由于C的向下兼容性,主要存在.h文件 - 所有C代码也是有效的Objective-C代码.AC编译器一次只能处理一个文件; 每个文件都是独立编译和解析的.C编译器"必须"在首次使用之前已经看到了某个符号的声明.所以,如果你在Bm中使用A类,那么编译器必须在某个时候看到A的声明; 避免做类似#include "A.m"约定的事情是在头文件中拆分声明并在.c,.m,.cpp ...文件中实现.
其他语言(如Java)会在编译时自动扫描B.java的同一目录中的文件,以查找其他类的声明; C编译器有点"老",需要你#include所有必要的标题.
简而言之:主要是历史原因.
头文件上的维基百科条目使用与您相同的Java比较,这是一个奖励:
一些编程语言(最着名的是C,C++和Objective-C)使用头文件.这些文件允许程序员将程序源代码的某些元素分离为可重用文件.头文件通常包含类,子例程,变量和其他标识符的前向声明.希望在多个源文件中声明标准化标识符的程序员可以将这些标识符放在单个头文件中,然后只要需要标题内容就可以包含其他代码.这是为了使标题中的接口与实现分开.C标准库和C++标准库传统上在头文件中声明它们的标准函数.
较新的编译语言(如Java,C#)不使用前向声明; 标识符自动从源文件中识别,并直接从动态库符号中读取.这意味着不需要头文件.
| 归档时间: |
|
| 查看次数: |
3960 次 |
| 最近记录: |