一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用。从论坛、微博等等地方看到的初学者提出的问题,也暴露出他们不知道很多他们的疑惑其实在文档里面写的非常清楚。而有时候当他们想从文档去找解决方案的时候,也往往找不到。或者有些人意识到了,阅读文档是学习的好办法,但是不得要领。
中国的技术社区有一个很没意思的毛病,就是技术深了,看不懂骂不知所云,技术浅了,看得懂骂没有技术含量。不过管那么孙子做啥,对于现在可能还不知道怎么阅读文档的人,希望这篇文章有所教益吧。
如上图,打开后,整个文档界面有左面的侧栏和右面的内容区域构成。左面的侧栏可以选择不同的文档库。你的Xcode里面一般来说有一组不同版本的iOS文档库、一组不同版本的OS X文档库,以及一个Xcode文档库。
如果你这里没有你要查看的文档库,你可以选择Xcode的Preferences菜单,然后选择Downloads -> Documentation。在这里可以看到已经下载安装了的文档库,还没有下载的文档库,可以酌情选择。如下图:
然后我们看,文档内容区域的左侧导航区域,这里揭示了文档库的结构。如下图:
首先是,Resource Types,也就是资源类型。文档库里面全部的文档都是这几个类型中的一个:
总结一下,这里面的Reference、Release Notes、Sample Code、Technical Notes、Technical Q&A,一般来说只是备查的。主要要看的是Getting Started和Guides。
然后下面是Topics,也就是话题,被分为:
这里不多说,大多数都是顾名思义的问题。但是值得一提的就是有很多初学者说,我想好好了解下图形和动画的技术,但是文档里面找不到,这就只能说,你睁着大大的眼睛,为毛左看右看看不到呢?
最下面是Frameworks(框架),分为:
这里我们先不讨论这个东西,后面会仔细讲。
总体来说左边的导航区域就是用三种不同的维度,来帮你精准定位你需要的内容。
现在我们看内容区域的右边。注意上面的文档过滤器。如下图:
假设,你现在想看关于性能方面的Guides,那么你应该做的就是在左面的导航,点击Topics -> Performance,然后在右边的文档过滤器上面输入Guides。或者你也可以在左边的导航,点击 Resource Types -> Guides,然后在文档过滤器里面输入 Performance。
熟练使用导航和文档过滤器的话,学习就会非常方便快捷。
前面我们讲Xcode的文档结构是在介绍如何能够快速定位到你要找的内容。但是很多人的问题可能是一开始就根本不知道要读什么。
这里我们就介绍自学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(什么样的结果才会命中),包含了三项:
然后是Languages(语言选项),包含Javascript、C++、Java、Objective-C、C语言。
然后是,Find in(在哪些文档库搜索),包含了你Xcode里面安装的全部文档库。
最后,我们简单介绍下怎么阅读文档。文档的阅读界面如下图:
值得注意的是,标题下面这几样:
在其次一个很重要的东西,其实是标题上面那一条窄窄的导航栏,那是一个多层树状导航栏,看文档的时候,可以点击那个栏的不同位置浏览。
其实这个栏包含了整个文档库的组织结构树状图,可惜只有在这个界面才能浏览。有兴趣的可以慢慢浏览,里面信息量其实非常大。
对你的感谢真想用星爷的一句话来表达。......
谢谢!
对于真正要入学iOS者,真的非常有用,因为她的学习跟其他的学习真的太不相同了。本身的reference太丰富,太好了!很多人都不知道学习的方法。
谢谢Tiny兄,谢谢yangwen13:)
想问:"读取后端服务器数据,通过图表来展示"这类应用是不是应该读"Data Management"和"Graphics & Animation"这两个主题呢?两个主题里应该分别先读"Core Data Tutorial for iOS"和"Drawing and Printing Guide for iOS"吗?
楼主您好, 我是一个初学IOS开发的新人, 现在正在看“Objective2.0程序设计”, 和“马上着手开发IOS应用程序”,这样的学习方法可行与否?现在对于好多概念性的东西还是很模糊。尤其是框架, 那么多的内容, 是预先了解一二还是等用得时候才去找?
今天开始学 Mac App 开发,我之前不小心把 Xcode 升级到了5.0,但发现教程文档里的东西似乎还是4.x 的,里面说的很多东西都变化了,我只能猜。我看 "Start Developing Mac Apps Today"文档最近更新还是4月12日。需要回到4.x吗?
《Your First iOS App》
《Your Second iOS App: Storyboards》
《Your Third iOS App: iCloud》
这三者都搜寻不到
不知道是不是我自己搜寻方式不对的问题?
俺觉得 文档苹果做的挺到位的了. 而且基本都有范例演示使用. 试想symbian 时那叫一个郁闷. 工具链是二者的差别. 也许正是nokia 为apple 做了一个原始积累...
真不错。我刚看完Stanford的ios教学视频。接下来开始熟悉cocoa和objective c。然后把以前windows下的开源软件移植到Mac上。
可以在这搜(旧的)Getting Started 《马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)》 《Your Second iOS App: Storyboards》 《Your Third iOS App: iCloud》
https://developer.apple.com/legacy/library/navigation/
谢谢@tinyfool 我的Xcode 6.1,和@Anonymous 遇到的问题一样,在Downloads->Documentation里只有iOS 8.1,OS X 10.10 和 Xcode 6.1,没有其它的啦,在线的可以找到,Resources for Apple Developers 进到 iOS Developer Library,就和 @tinyfool 老师上面的截图一致了。 只是没有见可以下载到本地的方法。
你好,我在Xcode的Preferences菜单,选择Downloads -> Documentation,和Components下载,都没有反应,家里的网速是足够的,怎么破?
《iOS Technology Overview》 很认真的看了,接下来的 《iOS Human Interface Guidelines》 和 《iOS App Programming Guide》 打算以后看,现在开始看 《View Programming Guide for iOS》 和 《View Controller Programming Guide for 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》
我想问下tiny老师和其他大牛们,你们有这些书的中文版地址不,英文版看起来有点费力。感激不尽啊!!
xcode7免证书真机调试和手册里的中文帮助 《马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)》 真的太棒了...
@tinyfool 非常感谢Tiny老师如此好的文章,要是早几年看到该有多好,不过现在也不晚~我接触iOS开发有两年多了,也上线了自己的iOS应用,文中提到的文档我也都在学习过程中查阅过(但不是从头到尾啃下来,只看了需要的部分)。这句话引起了我极大的注意——「我推荐的必读文档就这么多,仔细看的话,最多也就是今天就看完了。」正是因为这些文档我都接触过,对其信息量和深度有个大概了解,我才觉得不可思议,一天怎么可能看得完?我看文档的方式是追求理解,必要时写demo实践一下,直觉告诉我这个方法没问题,但一天真的看不完……我不是要一天看完,我也有耐心一周乃至一个月看完,而是从这句话看到了突破自己学习速度的希望,所以很激动啊,求指点啊