了解 Apple 开发人员参考文档

Posted

技术标签:

【中文标题】了解 Apple 开发人员参考文档【英文标题】:Understanding Apple Developer Reference documentation 【发布时间】:2016-04-19 15:47:51 【问题描述】:

我看到了另一个关于此的问题 (Understanding how to use methods found in Apple Developer Reference documentation),它似乎因为不够具体而被关闭,所以我想问一个具体的问题,看看我是否能得到与他们相同的答案试图到达。

我对此比较陌生,希望能够更好地阅读 Apple 文档,但我无法立即知道我是如何知道这一点的 (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/#//apple_ref/occ/instm/NSArray/initWithObjects:count:):

- (instancetype)initWithObjects:(ObjectType)firstObj

变成(类似)这个(例如):

rssFeedURLs = [[NSMutableArray alloc] initWithObjects: url1, url2, nil];  

我确信它一旦“点击”就很容易了,所以我想知道您是否可以给我任何帮助,以便我可以更轻松地从基本层面真正理解这一点。

我现在正在阅读编程书籍、教程、视频等,以继续深入了解基础知识。无论出于何种原因,我都对理解 Apple Docs 方法感兴趣,将其转换为实际代码。

感谢您的耐心和时间!

【问题讨论】:

如果您查看给定方法的“参数”部分,通常会更好地描述每个参数的作用/如何使用它。例如,对于initWithObjects:,文档说“以 nil 结尾的以逗号分隔的对象列表。”——这对您的情况非常有用。不幸的是,这个问题仍然主要基于意见(每个人的学习方式不同),因此我将投票结束。 所以NSArrayinstancetype,但是为什么他们把它放在() 中呢? initWithObjects 是方法。您将ObjectType 传递给它。这就是我想要完全理解的事情,如何在我前进的过程中向自己解释它 instancetype 是方法返回的值的类型(在这种情况下是一个新的NSArray 实例)。所有方法返回类型都包含在() 中,这只是obj-c 语法。 initWithObjects: 是方法的名称,ObjectType 是一个lightweight generic type,表示要存储在数组中的对象的类型。 那非常有帮助,抱歉我的问题不符合参数,也许它应该,但感谢你对它很好。作为后续行动,我将如何使这个问题不那么基于意见?我放了一个具体的例子,但这一定不是你要找的。再次感谢! 问题的问题在于无论示例多么具体,“我如何更好地理解 Apple 文档”的基本问题都是基于意见的。我不确定有没有办法让你的问题不基于意见。我建议尝试在 obj-c 中构建一个简单的应用程序,使用 SO 来回答您可能对代码有的任何特定问题/问题。只要确保它是on topic,并且在询问之前做一些研究:) 【参考方案1】:

你没有仔细阅读。其实有

- (instancetype)initWithObjects:(ObjectType)firstObj, ...;

在文档中。 ...可变参数。要理解这样的事情,你应该知道它到底是什么。因此,在这种情况下,需要理解语言特征。谈到ObjectType,它是轻量级泛型,也是语言特性。

如果你想知道为什么url1, url2, nil 的末尾有nil,你应该仔细阅读文档。来自你引用的

以 nil 结尾的以逗号分隔的对象列表。

所以,这里没有任何魔法。 总之,你需要两件事来更好地理解苹果参考

    了解您使用的语言 仔细阅读,不漏一字

【讨论】:

所以NSArrayinstancetype,但是为什么他们把它放在() 中呢? initWithObjects 是方法。您将ObjectType 传递给它。这就是我想要完全理解的事情,如何向自己解释。 instancetype 是语言功能。它告诉编译器,该方法将返回您调用它的类的对象。将一些东西放入() 是 ObjC 的基础——它是方法的返回类型(再次阅读您的数千个教程)。不,您没有将 ObjectType 传递给方法 - ***.com/a/30719796/5016443 感谢您的回复。这是指“再次阅读您的数千篇教程”? 不客气! “再次阅读你的数千个教程”是关于你的“我正在通过编程书籍、教程、视频等工作”。看起来你正在努力学习 Objective-C 基础知识,所以一定要获得更好的语言知识,而不是返回框架文档 哦,好吧,现在我看到你在开我的玩笑,我在第一次阅读时并没有意识到这一点。我会努力变得更好【参考方案2】:

在你使用示例的问题中:

- (instancetype)initWithObjects:(ObjectType)firstObj

(这应该是

- (instancetype)initWithObjects:(ObjectType)firstObj, ...

- 其余部分在文档中,但由于布局不佳,在下一行)

在随后的评论中你写道:

所以NSArrayinstancetype,但是为什么他们把它放在() 中呢? initWithObjects 是方法。您将ObjectType 传递给它。这就是我想要完全理解的事情,如何在我前进的过程中向自己解释它

您似乎还不熟悉 Objective-C 中的方法声明是什么样的,您应该通读 Apple 的 Method Declarations Indicate the Messages an Object Can Receive,其中解释了语法。

一旦您了解了如何声明自己的方法,那么阅读文档中的方法应该很容易。

但是,您选择了具有许多更高级功能的示例:

instancetype - 不是很高级,但这是声明初始化或工厂方法的返回类型的相对较新的方法。请参阅 Apple 的 Adopting Modern Objective-C 以获得解释,或者仅将其用于所有初始化或工厂方法并了解为什么是后者。

ObjectType - 这与 Apple 的新 轻量级泛型 有关。这是一个为与 Swift 交互而设计的轻度指定功能(请参阅Interacting with Objective-C APIs)。通常在阅读文档时,如果您看到 ObjectType,您可以将其替换为 id - 意思是“任何对象类型” - 以了解该方法。

firstObj, ... - 这是 Objective-C 可变参数语法 - 其中方法采用可变数量的参数。文档中的参数描述将提供更多详细信息,在本例中为“以nil 结尾的对象的逗号分隔列表”。有关变量参数的更多详细信息,请参阅 Apple 的 Variable arguments in Objective-C methods。

就是这样,在一个示例中,您可能已经使用了您可能会看到的大多数高级功能。

HTH

【讨论】:

以上是关于了解 Apple 开发人员参考文档的主要内容,如果未能解决你的问题,请参考以下文章

测试基础测试产出的文档“们”

iOS 文档目录大小限制

Storekit 框架

Office VBA 开发人员的文档资源 [关闭]

测试人员必掌握的测试文档

软件设计文档最容易忽略内容看这里!