为什么objective-c @interface定义放在一个单独的.h文件中?

时间:2011-04-29 13:30:11

标签: objective-c

我认识到这是一般性问题,但我对你的意见感兴趣:

  • 为什么@interface @protocol和@property definitons分离成.h头文件然后导入到实现文件中?

是否有人只是在.m文件中定义了所有内容?

顺便说一句>这不是我计划不使用.h文件,只是试图理解它背后的想法!

1 个答案:

答案 0 :(得分:6)

因为Objective-C依赖于标准C基础结构,其中每个编译单元(.m)都是单独编译的,然后所有编译单元都链接在一起。

这意味着Objective-C编译器的静态类型检查阶段只需要.h个文件来了解声明的类的特征(例如方法的签名),但只是为了确保所有内容都被用作它应该是,这就是你#import在其他源文件中需要你在标题中声明的内容的原因。

如果您有A.h/.mB.h/.m使用A,您可以将头文件视为合同:“如果您想使用A,我会在其末尾链接其二进制代码编译阶段,这个头文件中描述了A能够提供的内容,这是你应该知道的唯一内容“