gpt4 book ai didi

objective-c - Xcode 和 Objective C 恶作剧

转载 作者:行者123 更新时间:2023-11-28 19:23:03 25 4
gpt4 key购买 nike

Xcode、Cocoa touch 和一般 iOS 开发的新手。并且正在为他们的 iPhone 类(class)参加斯坦福演练。我在几个地方有点困惑,需要向你们提出我的疑问:

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

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

  2. 根据上述问题,在我完成演练时,我注意到类声明发生在 CalculatorBrain.h 中,而这些方法实际上是在 CalculatorBrain.m 中实现的。我无法理解为什么这样做的细微差别,所以如果有人愿意阐明这一点,那将非常有帮助

再次感谢,

帕里贾特卡利亚!!!

最佳答案

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

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

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

这意味着您可以在不泄露您的绝密实现(对制作库有用)的情况下将您的 header 提供给其他人,包括您的 header 而不用担心可能的多个定义等。您还可以在.c 文件,使用 header 的人(就像您的其他代码)无法看到或使用,因此您不必担心稍后更改它和编译中断。

关于objective-c - Xcode 和 Objective C 恶作剧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com