25

我是一名尝试开始使用 Objective-C 的 C 和 C++ 程序员。不过,我真的很困惑,因为显然完全没有语言和标准库的标准文档。我可以理解没有ISO标准,但是根本就没有参考文件吗?似乎没有人非常关心这种事态,这是怎么回事?(诚​​然,谷歌很难找到这样的东西,因为“参考”、“文档”和“标准”都是重载的术语。所以我可能错过了一些关键的东西。)

这个问题接近于问同样的问题:我在哪里可以找到解释如何实现 Objective-C 的文档,并且提供的唯一答案是“阅读 Apple 发布的这个源代码,这与他们几年前的实现非常接近, 也许”。

此页面:http ://clang.llvm.org/docs/ObjectiveCLiterals.html包含 Objective-C 的正式语法片段,但具有讽刺意味的是,它是在描述 Clang 刚刚推出并自行添加的功能的上下文中并且没有其他人支持。这里还有另一种语法:http ://www.omnigroup.com/mailman/archive/macosx-dev/2001-March/022979.html但它已有 10 多年的历史了。

将问题缩小到最低限度:我想知道“对象”保证提供哪些方法,以及每种方法的行为是什么。对于其他语言,此类信息通常由以下内容提供: http: //docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html

4

3 回答 3

15

不幸的是,没有像 C++ 或 C 那样的 ObjC 标准。Apple 是该语言的主要用户和驱动程序,他们的编译器实现(Clang 的 ObjC 位)是事实上的标准。他们的旧文档断开的链接)“Objective-C 编程语言” 与您得到的散文版本差不多,而且它远不及其他任何一种语言标准的精确度(而且它往往落后于编译器)。

它可能仍然在网络上的某个地方浮动,但它不再是最新的。“使用 Objective-C 编程”似乎是他们想要的替代品(但同样,它不像标准)。

关于您在 Tim 的已删除答案下的评论(仅限 10k 链接),Cocoa 根类为NSObject,其接口已记录,但其来源不可用。请注意,该NSObject协议也是 Cocoa 对象功能的一个极其重要的部分。Apple 的运行时是开源的,* 并且有一个名为 的根类Object,我假设是为了演示。它不用于 Cocoa 编程。

当然,您已经知道所有这些。您的问题的直接答案是“没有”。但是,正如 bbum 指出的那样,大多数语法与 C 相同:ObjectiveC string literals 的权威描述? (是的,我将我的评论从那里复制粘贴到这个答案的开头)


*请注意,与您在问题中所说的相反,这是实际的最新运行时。

于 2012-06-13T03:18:17.117 回答
5

我想我理解你的问题是正确的,所以我会相应地回答......

我强烈推荐Apple Developer Library中的文档。以下是一些帮助您入门的基本指南:

Objective-C 编程中的概念

使用 Objective-C 编程

可可基础指南

iOS 应用程序编程

那里的文档是 Objective-C 和 Cocoa 最佳实践和编码标准的权威来源。还有更多关于众多主题的文档,因此请务必查看该网站。

您还询问了如何知道哪些方法可用于对象。要知道这一点,您可以查看类引用。

例如:

NSObject 类参考

指南和类引用之间的区别在于,指南更多地是关于代码背后的概念,而类引用是类可用的方法和属性的列表。

希望这有帮助。

于 2012-06-12T03:44:23.027 回答
1

至少找到了一些 Objective-C 的语言定义,包括语法等(见链接)

我现在就在你 3 年前去过的地方(根据你问题中的日期):我开始接触 Objective-C,我觉得很奇怪似乎没有参考手册,在哪里例如,我可以查找语法、关键字等的确切含义和定义。

我现在发现,至少其中一些可以在与可可相关的文档中找到(可可核心能力)。例如,链接跳转到关键字“@property”的定义。

在我的 POV 中,这不仅与 Cocoa 相关,而且通常定义了 C 的 Objective-C 语言扩展。这就是为什么我不会在标有“Cocoa”的文档中搜索它的原因。

于 2015-08-11T15:17:37.413 回答