我认识到这是一般性问题,但我对你的意见感兴趣:
是否有人只是在.m文件中定义了所有内容?
顺便说一句>这不是我计划不使用.h文件,只是试图理解它背后的想法!
答案 0 :(得分:6)
因为Objective-C依赖于标准C基础结构,其中每个编译单元(.m
)都是单独编译的,然后所有编译单元都链接在一起。
这意味着Objective-C编译器的静态类型检查阶段只需要.h
个文件来了解声明的类的特征(例如方法的签名),但只是为了确保所有内容都被用作它应该是,这就是你#import
在其他源文件中需要你在标题中声明的内容的原因。
如果您有A.h/.m
和B.h/.m
使用A,您可以将头文件视为合同:“如果您想使用A,我会在其末尾链接其二进制代码编译阶段,这个头文件中描述了A能够提供的内容,这是你应该知道的唯一内容“