宝贝新手Xcode,Cocoa touch和iOS开发一般。我正在参加斯坦福大学的iPhone课程演练。我在几个地方有点困惑,需要向你们提出疑问:
我有两个为模型创建的类,主要是CalculatorBrain.m和CalculatorBrain.h。 从我收集的内容来看,在Objective C中,创建一个类本质上由两个函数组成,一个是声明包含方法/消息和其他变量的类,而另一个是相同的实际实现。由此产生了两个问题:
为什么我必须先声明一个类而不实现它的方法? (这个概念似乎是从接口借来的)然后才开始实现它。
从上面的问题来看,当我通过演练时,我注意到类声明发生在CalculatorBrain.h中,而方法实际上是在CalculatorBrain.m中实现的。我无法理解为什么会这样做的细微差别所以如果有人愿意对此有所了解,那真的会有所帮助
再次感谢,
Parijat Kalia !!!
答案 0 :(得分:4)
这些是来自C世界的传统,它们只是避免一些问题的常见做法。它们不是两个类,它们是定义(在.h文件中)和实现(在.c或.cc文件中)。
如果您在.c文件中定义了类,则无法在其他地方引用它,因为它不会被定义。您可以包含.c文件,但之后您将拥有两个代码副本。你也可以使用“extern”关键字,但此时它有点奇怪。
如果您将代码放在.h文件中,那么当它包含在内时,代码就会被包含在内。这意味着您可以获得具有三个“getMyThing”函数的编译器错误。
这意味着您可以将标题提供给其他人,而不会泄露您的绝密实现(对于创建库很有用),包括标题而不必担心可能的多个定义等。您还可以在其中添加变量和函数。 .c文件使用标题的人(就像你的其他代码一样)无法查看或使用,所以你不必担心以后更改它并有编译中断。