Xcode 文档阅读指南

作为开发者,读官方文档是一项基本功也是长久工作,熟练掌握能极大提高开发效率。分享一个写给初学者的Xcode文档阅读指南,让当时刚接触Xcode的我受益匪浅。感谢细心的文章作者ourcoders的tinyfool(转自http://ourcoders.com/thread/show/117/,作者:tinyfool)

一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用。从论坛、微博等等地方看到的初学者提出的问题,也暴露出他们不知道很多他们的疑惑其实在文档里面写的非常清楚。而有时候当他们想从文档去找解决方案的时候,也往往找不到。或者有些人意识到了,阅读文档是学习的好办法,但是不得要领。

中国的技术社区有一个很没意思的毛病,就是技术深了,看不懂骂不知所云,技术浅了,看得懂骂没有技术含量。不过管那么孙子做啥,对于现在可能还不知道怎么阅读文档的人,希望这篇文章有所教益吧。


Xcode文档的结构

如上图,打开后,整个文档界面有左面的侧栏和右面的内容区域构成。左面的侧栏可以选择不同的文档库。你的Xcode里面一般来说有一组不同版本的iOS文档库、一组不同版本的OS X文档库,以及一个Xcode文档库。

如果你这里没有你要查看的文档库,你可以选择Xcode的Preferences菜单,然后选择Downloads -> Documentation。在这里可以看到已经下载安装了的文档库,还没有下载的文档库,可以酌情选择。如下图:

然后我们看,文档内容区域的左侧导航区域,这里揭示了文档库的结构。如下图:

首先是,Resource Types,也就是资源类型。文档库里面全部的文档都是这几个类型中的一个:

  • Getting Started
    新手入门,一般来说,是给完全的新手看的。建议初学者看看,这里面有一些建立观念的东西,有了这些建立观念的东西,后面的学习就比较容易了。
  • Guides —— 指南,指南是Xcode里面最酷最好的部分,学会看指南则大多数情况完全不用买书。Xcode文档里面的指南,就是一个一个问题的,从一个问题,或者系统的一个方面出发,一步一步详细介绍怎么使用Cocoa库的文档。一般程序员比较熟悉的是Reference,就是你查某个类、方法、函数的文档时候,冒出来的东西。那些其实是一点一点的细碎知识,光看那些东西就完全没有脉络。而Guides就是帮你整理好的学习的脉络。
  • Reference —— 参考资料。一个一个框架一个一个类组织起来的文档,包含了每个方法的使用方法。
  • Release Notes —— 发布说明。一个iOS新版本带来了哪些新特性,这样的信息,熟悉新iOS,比较不同iOS版本API不同,都需要参考这些文档。
  • Sample Code —— 示例代码。苹果官方提供的一些示例代码,帮助你学习某些技术某些API。非常强烈建议学习的时候参考,一方面光看文档有时候还是很难弄明白具体实现是怎么回事儿。另外一方面这些示例代码都是苹果的工程师写的,你从示例代码的变迁可以看到苹果官方推荐的代码风格流变。
  • Technical Notes —— 技术说明。一些技术主题文章,有空的时候可以浏览一下。往往会有一些收获。
  • Technical Q&A —— 常见技术问答。这是技术社区里面一些常见问题以及回答的整理。
  • Video —— 视频。目前主要是WWDC的视频,实际上是登录到开发者网站上去浏览的,这里就是快捷方式。想深入学习的话,一定不能错过,大量的看,不仅可以学好技术,还可以练好英文。

总结一下,这里面的Reference、Release Notes、Sample Code、Technical Notes、Technical Q&A,一般来说只是备查的。主要要看的是Getting Started和Guides。

然后下面是Topics,也就是话题,被分为:

  • Audio & Video —— 音视频
  • Languages & Utilities —— 语言和工具,Objective-C的一些知识,App Store的管理工具等。
  • Mathematical Computation —— 数学计算。
  • Xcode
  • Data Management —— 数据管理。
  • General —— 一般性的问题。
  • Graphics & Animation —— 图形和动画。
  • Networking & Internet —— 网络问题。
  • Performance —— 性能。
  • Security —— 安全。
  • User Experience —— 用户体验。

这里不多说,大多数都是顾名思义的问题。但是值得一提的就是有很多初学者说,我想好好了解下图形和动画的技术,但是文档里面找不到,这就只能说,你睁着大大的眼睛,为毛左看右看看不到呢?

最下面是Frameworks(框架),分为:

  • Cocoa Touch Layer
  • Media Layer
  • Core Services Layer
  • Core OS Layer

这里我们先不讨论这个东西,后面会仔细讲。

总体来说左边的导航区域就是用三种不同的维度,来帮你精准定位你需要的内容。

现在我们看内容区域的右边。注意上面的文档过滤器。如下图:

假设,你现在想看关于性能方面的Guides,那么你应该做的就是在左面的导航,点击Topics -> Performance,然后在右边的文档过滤器上面输入Guides。或者你也可以在左边的导航,点击 Resource Types -> Guides,然后在文档过滤器里面输入 Performance。

熟练使用导航和文档过滤器的话,学习就会非常方便快捷。


文档导读

前面我们讲Xcode的文档结构是在介绍如何能够快速定位到你要找的内容。但是很多人的问题可能是一开始就根本不知道要读什么。

这里我们就介绍自学iOS开发应该遵循或者说我们推荐的必读文档的阅读顺序。

阅读顺序:

  • 《马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)》
  • 《Your First iOS App》
  • 《Your Second iOS App: Storyboards》
  • 《Your Third iOS App: iCloud》
  • 《iOS Technology Overview》
  • 《iOS Human Interface Guidelines》
  • 《Learning Objective-C: A Primer》和《Pr
    ogramming with Objective-C》
  • 《iOS App Programming Guide》
  • 《View Programming Guide for iOS》和《View Controller Programming Guide for iOS》
  • 《Table View Programming Guide for iOS》

首先应该看的是Getting Started里面的《马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)》(中英文版本皆有,苹果官方的翻译)。这个文档讲的很浅,但是是建立概念的文档,你以后在开发里面经常遇到的概念,在这里都有包含,特别注意是,这个文档看起来简单,但是每页下面的相关文章,不是选读,都是必读。

即使是很多做了iOS开发很久的同学,其实也有很多概念上的误解,现代程序开发越来越简单,工具越来越强大,往往有些误解也可以继续前行,但是实际上不建立扎实的基础是很吃亏的,往往后面理解和解决一个不难解决小问题都要付出很多辛苦。�

阅读这个文档的目的和检测标准是,以后你看到iOS开发中的基本概念,都大致所有了解。

读完《马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)》后,应该去看Your XXX iOS App系列这个系列不是什么很难的文章,你也不必着急先去学习Objective-C,学什么C语言就更不要着急。我推荐的学习方法是有成就的逐步学习法。在学习系统体系架构、Objective-C之前,你可以先按照文档写一个全天下最简单的App,完成学习过程中第一个里程碑。在这个过程中不用担心有什么疑问,有什么不懂,先照着做就是。

阅读这三个文档的目的和检测标准是,把这三个Demo App做出来在模拟器上跑起来。

在这个过程中,你对开发工具的基本认识就建立起来了,也有了成就感,去了魅(就是消除了对iOS开发的神秘感)。

再往下,建议你去看《iOS Technology Overview》(iOS技术概览),iOS不是一个技术,而是一堆技术,前一篇讲到文档导航区域的分类,框架分类的时候,我说不细讲的原因就在于此,你要做一个动画应该用Core Animation还是OpenGL?你要做一些文本相关操作应该用Core Text还是什么,就是看这里。

学习现代的程序开发,语言和框架并重。我们Tiny4Cocoa叫做这个名字的原因就是,iOS/Mac开发者的代表往往就是这个Cocoa框架,就是这个SDK。大多数你所需要的功能都躺在框架里面,你知道框架的结构,你才知道怎么去寻找相关的技术资料。

阅读这个文档的目的和检测标准是,遇到具体问题,知道应该去看哪方面的文档。

再下来,建议阅读的是《iOS Human Interface Guidelines》,Mac/iOS平台虽然也是百花齐放各类程序、App都有,但是总体看来,大多数优秀App的UI看起来都和整个系统很协调。这和Windows以及很多其他平台完全不同。这是为什么呢?

很大程度就归功于《Human Interface Guidelines》文化,所谓Human Interface Guidelines就是用户界面的规范,在苹果它还专门有一个缩写叫做HIG,是天条一样的东西。所有的App都推荐遵循HIG,遵循了HIG,你做的东西用户看起来就会觉得和整个系统很协调。即使是你要做一些创新的设计,你势必会打破HIG的限制,但是你这个时候仍旧应该遵循HIG的精神。

此外,你阅读HIG的很重要一点是了解整个UI结构和UE行为的逻辑机理,这样才能在你设计界面的时候有所依据。

阅读这个文档的目的和检测标准是,看到任何一个App,你可以知道它的任何一个UI是系统控件,还是自定义控件,它的层次关系等等。

《Learning Objective-C: A Primer》是非常初级和简单的入门,适合先阅读。《Programming with Objective-C》超微复杂一点点,适合后阅读。

一般人建议先学习语言,我反之建议先做了一个App,然后再学习语言。原因有几个,首先现代开发工具,往往不是用来开发控制台程序的,上来就会有框架,光懂语言不会使用IDE,甚至可能会更麻烦。再其次就是,其实现代语言发展到了面向对象以后,库往往比语言更复杂,更重要,或者说更多的时候,我们是在学习库,而不是语言,语言只是库的一个载体。

比如,Delegate和Block等等都和Cocoa的UI异步机制关系紧密,光看代码,这些语言元素非常难以学习,也完全不知道其意义在哪里。

阅读这个文档的目的和检测标准是,看得懂基本的Objective-C代码,方便后面的学习和阅读各种示例代码。

《iOS App Programming Guide》基本上介绍的就是开发一个App的完整流程,包括App的生命周期、休眠、激活等等,里面介绍的细节颇多。正式开发第一个上线的App之前必看。或者开发了一个App,临到提交前必看才文档。

阅读这个文档的目的和检测标准是,了解全部流程和很多细节问题。

《View Programming Guide for iOS》和《View Controller Programming Guide for iOS》非常重要。View是整个图形界面里面最重要的概念。所有的图形、界面绘制都基于View。你看到的一切复杂的用户界面,就是各种不同的View的组合堆叠。

View Controller是View和某种逻辑在一起的组合,本质上这种组合不是必须的,但是是大大降低编程复杂度的一种设计。很多人不懂什么是View什么是View Controller,这样写起代码来就很痛苦。

阅读这个文档的目的和检测标准是,深刻理解什么是View,什么是View Controller,理解什么情况用View,什么情况用View Controller。

UITableView是最重要的一个控件,是最常用的UI界面元素。在UICollectionView出现之前,大量的内容列表展示的自定义控件都是基于UITableView,比如很多书架、图片Grid其实都是UITableView做的。

所以《Table View Programming Guide for iOS》非常重要,一定要好好阅读。

阅读这个文档的目的和检测标准是,深刻理解UITableView/UITableViewController的理论和使用方法。

我推荐的必读文档就这么多,仔细看的话,最多也就是今天就看完了。学习一个东西,如果有一点点耐心,有正确的方法其实不难,不是说脑子非要很聪明,大多数人都可以做到一个星期就学会iOS开发,其实就是读完这些文档,大多数人就会了。

就像我强调了无数次,阅读英文文档不难,我自己从当年看英文文档非常吃力,必须查词典开始,认真的看英文文档,不会就查词典,一个多月过去,读英文文档就完全不需要查词典了。

我们公司主程 @sycx 老师,也说他原来英语也很不好,甚至现在英语仍旧很烂,但是看英文文档完全没有问题,也就是几个星期的认真学习以后就突破了。

其实学习iOS也如此。当然我不是说你看懂这10组文档就再也不用看别的了。而是说,如果你看懂了这10组文档,你就从初学者,或者是虽然会写一些程序,但是对iOS其实还不懂的状态,变成了一个入门者。

我不希望这个文章可以一句一句的帮你学会iOS是什么,这个文章的目的是帮你快速入门。一旦你入门了,你再遇到问题该看什么,你就不需要我讲了,你自己就知道了。一旦入门了,你就会发现,Xcode里面别的文档讲的内容虽然不同,但是结构你已经很清楚了,你学习起来很方便。

阅读本文的目的和检测标准是,遇到问题,知道看什么文档,想提升自己技术的时候,知道按照什么脉络自己组织阅读。


如何查询文档

最快捷的查询帮助文档的方法是不需要键入任何关键词的。你只需要在Xcode代码编辑器里,按住Option键,然后点击你想查询的关键词,就会获得关键词的帮助信息。如下图:

帮助信息会包括,一些简单的描述、哪个iOS操作系统开始提供,头文件,参考文档。头文件和参考文档是可以直接点击的。

即使你点击的关键字不是Cocoa库的内容,是自己代码里面的类或者方法,也可以获得相关的定义信息。如下图:

与之相关的热键是Command键加鼠标点击,即可跳到任何一个类名或者方法名的所定义的头文件。

快速查询帮助的另外一个方法是直接打开Quick Help栏,如下图,首先找到“右侧栏开关”,然后找到“Quick Help”开关即可打开。

Quick Help栏的作用机制是,只要它在打开状态,只要输入光标在什么关键字上,Quick Help栏就会显示跟关键字相关的简要帮助信息,跟Option键加点击的信息基本一致,但可能略微丰富一点。

写代码的时候,在大多数情况下,查询下快速帮助,看看头文件,就足以了。


搜索帮助

文档阅读界面最左面的上端的放大镜按钮就是搜索界面。下图是我们搜索UIImage,得到的搜索结果。

首先值得注意的是,结果也是分类的,分为Reference、System Guides、Tools Guides、Sample Code这四类。类别很利于我们快速找到我们需要的信息。前面已经介绍过类别,跟那个基本一致,参照即可。

另外需要注意的是,搜索框下面的选项,首先是Hits Must(什么样的结果才会命中),包含了三项:

  • contain search term 这是最常见的就是结果包含搜索词
  • start with search term 由搜索词开始
  • match search term 必须完全匹配搜索词

然后是Languages(语言选项),包含Javascript、C++、Java、Objective-C、C语言。

然后是,Find in(在哪些文档库搜索),包含了你Xcode里面安装的全部文档库。


阅读文档

最后,我们简单介绍下怎么阅读文档。文档的阅读界面如下图:

值得注意的是,标题下面这几样:

  • Inherits from 继承关系,继承自
  • Conforms to 遵循什么协议
  • Framework 属于什么框架
  • Availability 从什么iOS版本开始支持
  • Declared in 头文件
  • Related sample code 相关例子代码
  • Companion guide 相关的指南(UIImage没有,很多其他的类有)

在其次一个很重要的东西,其实是标题上面那一条窄窄的导航栏,那是一个多层树状导航栏,看文档的时候,可以点击那个栏的不同位置浏览。

其实这个栏包含了整个文档库的组织结构树状图,可惜只有在这个界面才能浏览。有兴趣的可以慢慢浏览,里面信息量其实非常大。

推荐阅读更多精彩内容

  • 【琳琳双语践行day1】昨天精选的13首儿歌筛选完毕 选出了cackle cackle mother goose ...
    雪儿琳琳妈妈阅读 18评论 0 0
  • 最近很迷一部综艺——《心动的信号》。一开始纯属无聊想随便看看有什么特别的内容,没想到一发不可收拾追到现在。今天周日...
    某话家阅读 289评论 5 4
  • 我是若熹,这是我原创日更第7篇。立志通过写作输出实现成己助人! 一、开启简书日更 相信时间的复利! 二、正式记账 ...
    若熹阅读 28评论 0 2
  • 曾经工作过的单位的HR经理是个非常善于与人沟通交流的妙人。不管是公司里哪个岗位的员工,他都能轻松的与之交谈。即便是...
    肥宅V阅读 30评论 0 0
  • 2019年3月23日,依约前往全运村想书坊参加慈怀读书会山东分会启动仪式暨第1期线下活动:修身齐家,从传统文化出发...
    摩西奶奶的粉丝阅读 72评论 0 5