繁体   English   中英

Xcode 和物镜 c 恶作剧

[英]Xcode and objective c shenanigans

Xcode、Cocoa touch 和 iOS 开发的新手。 我正在为他们的 iPhone class 进行斯坦福演练。 我在几个地方有点困惑,需要向你们提出我的疑问:

我为我的 model 创建了两个类,主要是 CalculatorBrain.m 和 CalculatorBrain.h。 据我所知,在目标 C 中,创建 class 基本上由两个函数组成,一个是声明 class 包含方法/消息和其他变量,而另一个是相同的实现。 由此产生两个问题:

  1. 为什么我必须先声明一个 class 而没有实现它的方法? (这个概念似乎是从接口中借来的)然后才继续实现它。

  2. 从上述问题中,当我通过演练 go 时,我注意到 class 声明发生在 CalculatorBrain.h 中,而这些方法实际上是在 CalculatorBrain.m 中实现的。 我无法理解为什么要这样做的细微差别,所以如果有人愿意对此有所了解,那真的会有所帮助

再次感谢,

帕里加特卡利亚!!!

这些是 C 世界的传统,它们只是避免一些问题的常见做法。 它们不是两个类,它们是定义(在.h 文件中)和实现(在.c 或.cc 文件中)。

如果您在 .c 文件中定义了 class,则无法在其他地方引用它,因为它不会被定义。 您可以包含您的.c 文件,但是您将拥有两个代码副本。 您也可以使用“extern”关键字,但在这一点上有点奇怪。

如果您将代码放在 .h 文件中,那么当它被包含时,代码就会被包含在内。 这意味着您可能会收到编译器错误,因为您拥有三个“getMyThing”函数。

这意味着您可以将您的标头提供给其他人,而无需泄露您的绝密实现(用于制作库),包括您的 header 而无需担心可能的多个定义等。您还可以在 .c 文件中添加变量和函数使用 header 的人(就像您的其他代码一样)看不到或无法使用,因此您不必担心以后更改它并导致编译中断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM