【问题标题】:Objective-C standards documentObjective-C 标准文档
【发布时间】:2012-06-10 00:42:00
【问题描述】:

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

这个问题接近于问同样的问题:Where can i find a document explaining how Objective-C is implemented,并且提供的唯一答案是“阅读 Apple 发布的源代码,这可能与他们几年前的实现非常接近”。

此页面:http://clang.llvm.org/docs/ObjectiveCLiterals.html 包含 Objective-C 的正式语法的 sn-p,但具有讽刺意味的是,它是在描述 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

【问题讨论】:

  • +1,好问题,经过充分研究。下次请注意使用正确的标签,以确保更好的可见性,the right people。在标记之前还要阅读标记 wiki,并确保它们的含义是您想要的。
  • 确实是个好问题。 NSObject (iOS / OS X) 是一个根类。
  • C 和 C++ 标准化了它们的库。请注意,可可不是标准化的,所以 NSObject 完全是苹果决定的。可可还有其他库,例如 GnuStep 和 objfw。奇怪的是没有语言规范。特别是因为 Objective-C 包含在 GCC 中,独立于 Apple。

标签: objective-c standards document grammar


【解决方案1】:

不幸的是,没有像 C++ 或 C 那样的 ObjC 标准。Apple 是该语言的主要用户和驱动程序,他们的编译器实现(Clang 的 ObjC 位)是事实上的标准。他们的旧文档(broken link) "The Objective-C Programming Language" 几乎与散文版本一样接近,而且它远不及其他任何一种语言的标准的精确度(而且它往往落后于编译器)。

它可能仍然在网络上的某个地方流传,但它不再是最新的。 "Programming with Objective-C" 似乎是他们的预期替代品(但同样,它没有像一个标准)。

关于蒂姆删除的答案下的your comment(仅限10k链接),Cocoa根类为NSObject,其接口为is documented,但其来源不可用。请注意,NSObject protocol 也是 Cocoa 对象功能的一个极其重要的部分。 Apple 的运行时是 open-source,* 并且有一个名为 Object 的根类,我假设是为了演示。 Cocoa 编程中不使用它。

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


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

【讨论】:

    【解决方案2】:

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

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

    Concepts in Objective-C Programming

    Programming with Objective-C

    Cocoa Fundamentals Guide

    iOS App Programming

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

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

    例如:

    NSObject Class Reference

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

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

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

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

      我现在发现,至少有一部分可以在与可可相关的文档中找到 (Cocoa Core Competencies)。例如链接跳转到关键字“@property”的定义。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        相关资源
        最近更新 更多