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

Dam*_*ien 1 objective-c

我知道这是一般性问题,但我对你的意见感兴趣:

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

有人在那里只定义.m文件中的所有内容吗?

顺便说一下>并不是说我打算不使用.h文件,只是想了解它背后的想法!

Jac*_*ack 6

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

这意味着,Objective-C的编译器的静态类型检查阶段将只需要的.h文件就知道声明的类的特性(例如,方法的签名),但只是为了确保它应该是一切都被使用,这这就是为什么你#import在其他源文件中需要你在标题中声明的内容.

如果你有A.h/.mB.h/.m它使用你能想到的合同类似的头文件的:"如果你想使用,我将在编译阶段结束链接的二进制代码,有什么能够提供在此描述头文件,这是你唯一应该知道的事情"