转:苹果Xcode帮助文档阅读指南
一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,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》和《Programming 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里面别的文档讲的内容虽然不同,但是结构你已经很清楚了,你学习起来很方便。
阅读本文的目的和检测标准是,遇到问题,知道看什么文档,想提升自己技术的时候,知道按照什么脉络自己组织阅读。
![]()
如何查询文档
Quick Help
最快捷的查询帮助文档的方法是不需要键入任何关键词的。你只需要在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没有,很多其他的类有)
 
在其次一个很重要的东西,其实是标题上面那一条窄窄的导航栏,那是一个多层树状导航栏,看文档的时候,可以点击那个栏的不同位置浏览。
其实这个栏包含了整个文档库的组织结构树状图,可惜只有在这个界面才能浏览。有兴趣的可以慢慢浏览,里面信息量其实非常大。
转:苹果Xcode帮助文档阅读指南的更多相关文章
- 苹果Xcode帮助文档阅读指南
		
文档导读 https://developer.apple.com/legacy/library/navigation/ 前面我们讲Xcode的文档结构是在介绍如何能够快速定位到你要找的内容.但是很多人 ...
 - 老猿学5G扫盲贴:3GPP规范文档命名规则及同系列文档阅读指南
		
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在学习5G规范过程中,有些内容把握不定的时候,有时 ...
 - Node.js的下载、安装、配置、Hello World、文档阅读
		
Node.js的下载.安装.配置.Hello World.文档阅读
 - 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读
		
本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...
 - Keras 文档阅读笔记(不定期更新)
		
目录 Keras 文档阅读笔记(不定期更新) 模型 Sequential 模型方法 Model 类(函数式 API) 方法 层 关于 Keras 网络层 核心层 卷积层 池化层 循环层 融合层 高级激 ...
 - Django文档阅读-Day1
		
Django文档阅读-Day1 Django at a glance Design your model from djano.db import models #数据库操作API位置 class R ...
 - Django文档阅读-Day2
		
Django文档阅读 - Day2 Writing your first Django app, part 1 You can tell Django is installed and which v ...
 - Django文档阅读-Day3
		
Django文档阅读-Day3 Writing your first Django app, part 3 Overview A view is a "type" of Web p ...
 - [转贴]xcode帮助文档
		
突然间得到了一台MAC ,这时候不学OC 更待何时学呀?马上找了IOS开发的书和网上的帖子看,最近在开源力量那里看了TINYFOOL的入门讲座,讲的都很虚,可能时间不够吧,也没看到什么例子呀,什么的, ...
 
随机推荐
- Leetcode题库——8.字符串转为整数【##】
			
@author: ZZQ @software: PyCharm @file: myAtoi.py @time: 2018/9/20 20:54 要求:实现 atoi,将字符串转为整数. 1)根据需要丢 ...
 - 网络1711-12&信管1711-12 图 作业评分
			
先放上本次作业的推荐博客,以及评分细则总表,在最后,会放几张图表对本学期大家的成果进行一个小小的总结,有兴趣的同学可以看看,感受一下自己这个学期的积累和进步.(主要针对网络的同学,信管的同学只有两次作 ...
 - tomcat文件中server.xml 实例说明
			
<?xml version='1.0' encoding='utf-8'?> # 这是server类, 指定一个tomcat的应用实例 <Server port="80 ...
 - HDU 2140 Michael Scofield's letter
			
http://acm.hdu.edu.cn/showproblem.php?pid=2140 Problem Description I believe many people are the fan ...
 - 关于对JSON.parse()与JSON.stringify()的理解
			
JSON.parse()与JSON.stringify()的区别 JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"nam ...
 - ecplise maven springmvc工程搭建
			
转载自:https://www.cnblogs.com/crazybirds/p/4643497.html 内网上网代理配置: 第一步:新建maven项目,选择Maven Project,如图1. ...
 - IPV6 国内进展情况
			
国家下一代互联网产业技术创新战略联盟(以下简称“产业联盟”),近日在北京发布了我国首份IPv6业务用户体验监测报告(以下简称<报告>).该<报告>监测了我国固定宽带的IPv6普 ...
 - 触发Full GC执行的情况 以及其它补充信息
			
除直接调用System.gc外,触发Full GC执行的情况有如下四种.1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象.大数组时才会出现不足的现象,当执行Full GC后空间仍然不足 ...
 - 纯css实现长宽等比例的div
			
现代网站页面基本都需要响应式,一个div的长宽往往我们都设置为百分之多少,这个百分之是相对于父容器动态计算的 这样在浏览器宽度变化之后,我们的元素也能自动更新长宽.例如:我们在页面上摆了一个div,这 ...
 - IoT与区块链的机遇与挑战
			
区块链, 分布式账本技术的一种形式, 自从2014年或多或少地获得了大量的关注: 区块链和物联网, 区块链和安全, 区块链和金融, 区块链和物流, 凡是你能想到的,仿佛都可以应用区块链. 在本文中, ...