2012-06-06 51 views
23

我是一名尝试开始使用Objective-C的C和C++程序员。但是,我真的很困惑,因为显然完全没有语言和标准库的标准文件。我可以理解,没有ISO标准,但是根本没有参考文档而这又是怎么一个人似乎没有关心这种情况呢? (不可否认,Google很难处理这样的事情,因为“参考”,“文档”和“标准”都是超载的条款,所以有可能我错过了一些关键的东西。)Objective-C标准文档

这个问题得到接近询问同样的东西:Where can i find a document explaining how Objective-C is implemented并且唯一提供的答案是“阅读苹果发布的这个源代码,它与他们几年前的实现非常接近,也许”。但是具有讽刺意味的是,它是在描述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

+1,很好的问题和很好的研究。请确保下次使用正确的标签,以确保更好的可见性,适合[合适的人](http://stackoverflow.com/tags/objective-c/topicrs)。在标记之前还要阅读标签维基,并确保它们的含义与您的意图一致。 –

+0

的确是个好问题。 NSObject([iOS](https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html)/ [OS X](https:// developer) .apple.com/library/mac /#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html))是一个根类btw。 –

回答

5

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

我强烈建议在Apple Developer Library文件。这里有几个基本的指南,让你开始:

Concepts in Objective-C Programming

Programming with Objective-C

Cocoa Fundamentals Guide

iOS App Programming

的文件有对的Objective-C和Cocoa最佳实践的权威来源和编码标准。关于众多主题的文档还有很多,因此请确保检查该网站。

您还问过如何知道对象可用的方法。要知道这一点,你可以查看类参考。

例如:

NSObject Class Reference

的引导件和类引用之间的不同之处在于导板更多关于代码背后的概念,而类引用的方法和可用的属性的列表为一个班级。

希望这有助于。

14

不幸的是,没有针对ObjC的标准,因为C++或C是标准的。Apple是语言背后的主要用户和驱动程序,它们的编译器实现(Clang的ObjC位)是事实上的标准。他们的旧文档(broken link) "The Objective-C Programming Language"与您接触散文版本差不多,并且与其他任何其他语言的标准的精度差不多(并且它往往落后于编译器)。

它可能仍然在网络上某处浮动,但它不再是最新的。 "Programming with Objective-C"似乎是他们的预期替代品(但它再次,它是没有什么像一个标准)。

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

当然,您已经了解了所有这些。直接回答你的问题是,“没有一个”。虽然大部分语法与C相同,但是,正如bbum指出的那样:Authoritative description of ObjectiveC string literals?(是的,我从那里复制粘贴我的评论到本答案的开头)


*请注意,相反,你在你的问题说什么,这是实际,跟上时代的,运行时。

1

发现至少有一些Objective-C语言定义,包括语法等(见链接)

我只是现在,你已经3年前(根据你的问题的日期) :我开始进入Objective-C,我觉得很奇怪,似乎没有参考手册,例如我可以查找语法,关键字等的确切含义和定义。

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

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