写在前面
梧桐松柏共秋色,驼缃葱倩两相宜。
每到秋日,武昌城郊的小茶馆中便坐满了人,在这清寂的冷风中觅得一个好去处可不见得是一件易事。
“啪。”
惊堂木一下,满座俱静。
“野草闲花遍地愁,龙争虎斗几时休。抬头吴越齐秦楚,转眼梁唐晋汉周。如今这手机应用的世道,群雄割据,可谓乱世之秋。最令人瞩目的当属‘安卓派’和‘苹果帮’,这二者早已牢牢占据了绝大部分市场。众所周知,安卓派控制了绝大部分的领土,而苹果帮在与安卓派的战争中,仍立于不败之地。相信在座的各位也都曾听说过,苹果帮拥有一个强大的法宝,其名为Xcode。这个法宝啊,可谓是无所不能,神奇至极,从内功心法到外功招式皆能良好适应。而安卓派直到最近才推出了他们自己的法宝:Android Studio。不过其功能和如今的Xcode相比,仍然有一定的差距。Xcode究竟何许来历?今日我们便来为诸君一一述说。”
“Xcode是从曾经的NeXT帮所拥有的‘Project Builder’这件法宝中精炼出来的,可谓是取之精华,去其糟粕。话说这个NeXT呀,是由伟大的乔帮主一手创建,在乔帮主回归苹果帮之后,NeXT自然也划归到了苹果帮的旗下。”
“2003年,Xcode 1.0版本横空出世。但是很可惜,这个版本的推出并未在IT江湖中激起太大风浪,这时候的江湖中仍然流传着以微软为主的‘VS’系列法宝。”
“直到2008年,在第一代iPhone诞生的一年之后,引入了iOS SDK这个心法的Xcode 3才如同一声惊雷,引发了江湖动荡。众多侠客纷纷转投苹果帮旗下,开始一心一意修炼起Objective-C这门内功,并且也纷纷研究出了众多精彩招式。”
“2011年Xcode 4发布,苹果帮吸取了众多的外派武功,将诸多法宝的优势融入到了自身的法宝当中,譬如Interface Builder。鄙人认为Xcode 4才真正能和VS等法宝隐隐抗衡。”
“也正是同一年,苹果帮的创始人乔帮主羽化登仙。苹果帮便被江湖众派看衰,也面临了诸多打压。这个时候,苹果帮抛弃了以GCC为基础的修炼方式,转而使用LLVM来修炼。”
“而苹果帮仍默默地前进,在2013年推出了Xcode 5。Xcode 5提供了一系列帮助学徒检测自己经脉的途径,例如可视化调试器。同时,在外功修炼方面,Xcode也提供了诸如资产管理、自动布局等简单但强大的招式。”
“在2014年,苹果再次放出了一个重磅炸弹:Xcode 6。在这个版本中,加入了苹果帮的架构师Chris Lattner花费了4年时间研究出的新内功心法:Swift。Swift面向Cocoa和Cocoa Touch,几乎可以完美地与Objective-C兼容,不用担心冲突,而且Swift的入门曲线比Objective-C要小很多,学徒们不必耗费大量的时间来初窥门径。此外,Interface Builder也提供了实时渲染的功能,修炼的内功可以即时显示出来。”
“书曰:天下风云出我辈,一入江湖岁月催。皇朝霸业谈笑中,不胜人生一场醉。这Xcode的玄妙之处啊,吾等视之枯燥无味,然帮众们却乐在其中。正所谓:仁者乐山,智者乐水,预知后事如何,请听下回分解。”
话毕尺落,说书人轻拈须发,合了扇子,向众人拱手。茶客们回味过来,皆齐声叫好。落在窗旁的一只云雀被众人的聒噪惊到,展翅掠出了茶馆。
茶客中的一位少年目光随着云雀,渐渐移向远方,忽然脸上露出了一丝笑容。茶杯旁边,蓝色的卷轴正泛着微弱的光芒。
我们的故事才刚刚开始……
本书目标
我们衷心希望以轻松的方式将苹果公司开发的最出色、最好用以及最可靠的iOS以及OS X集成开发环境(Integrated Development Environment,IDE)介绍给大家。让大家能够尽快地入门Xcode,熟练掌握Xcode的常见使用方法,并且能够掌握Xcode的一些高级用法,从而开发出让世人惊叹的应用。
通过本书,你可以达到以下学习目标:
□ 掌握Xcode的基本使用方法,包括文件操作、编写代码以及编译运行应用等。
□ 熟悉Xcode的界面布局,能够在这些界面中快速找到所需的内容。
□ 掌握Xcode的可视化界面设计方式,了解界面构造器(Interface Builder)、自动布局(Auto Layout)和屏幕分类(Size Classes)的使用方法。
□ 掌握Xcode的常用高级编辑方式,包括如何进行搜索、本地化等操作。
□ 了解属性列表(Property List)和Core Data的模型设计。
□ 掌握编译方案(Scheme)、调试、测试等相关方法。
□ 掌握如何向App Store上传应用。
“不积跬步,无以至千里”,任何编程语言、任何工具都需要不断地使用和练习才能够熟练掌握,从而达到“妙笔生花”的境界。通过本书的学习,你将对iOS或者OS X应用的开发流程不再陌生,从而踏上苹果开发者的江湖之路!
面向读者
在购买或者阅读本书之前,我们希望你是下列读者群体中的一员,我们不希望你花费冤枉钱来购买一本只能封存于书架最顶端的书籍,也不希望你购买这本书之后发现书中的内容对你来说是没有帮助的。因此,我们在此说明一下,本书不是武侠小说,希望你能够仔细阅检视一下本书的主要内容是否符合你的期望。
本书面向的读者包括如下几类:
□ 对苹果开发感兴趣,已经粗略了解Objective-C或者Swift语言的读者,并且迫不及待地想尝试开发的开发者。
□ 从别的平台转过来的开发者,想要了解一些关于Xcode的基本用法。
□ 想要了解关于Xcode中比较高级的用法的读者。
□ 英文比较吃力,不想费力去搜索Xcode相关资料的读者。
□ 想要使用苹果新技术来进行设计的设计师。
如果你期待了解一些非常高级的用法,那么本书可能不是你的最佳选择,目前本书不会包括以下内容:
□ Xcode Server、AppleScript等方面的内容;很遗憾,本书对于这部分内容暂时没有介绍,在未来的版本中,我们会考虑适当增加这方面的内容。
□ OS X应用开发;我们建议你去阅读相关的英文书籍和查阅相关文档,关于OS X开发的中文版系列教程十分少,本书仅仅提及关于OS X的部分内容,不涉及代码部分。
□ 有关Objective-C以及Swift编程语言的语法介绍;本书不是一本语法书,因此本书不会着重讲解书中每行代码的意思,我们希望你拥有Objective-C或者Swift语言的基础知识。
本书构思缘由
我们童年时期深受“侠客”、“修真”风格的故事、小说所影响,并且又不想让这本书变得晦涩难懂,因此构思本书的时候,自然而然地就想将武侠风格融入到本书当中。
然而,将一个颇具英文风格、科技感、现代感的事物——编程——转变为“武侠”风格是一件非常难的事情。因此我们尝试“以武侠故事带动知识”的原则来写作,使读者在学习技术的过程中不至太枯橾。
书名“江湖录”的由来,部分灵感来源于金庸先生的《书剑恩仇录》以及《笑傲江湖》。在我们的头脑中,Xcode是一个极佳的法宝,整个“开发者的世界”是一个“腥风血雨”的“江湖”,而Xcode在这个江湖中占有一定的地位。少年青锋为了掌握这个法宝,不畏艰辛,努力学习,最终成长为一名大侠。我们期待读者也能跟随少年的步伐,平步青云。
本书架构
首先说明一下,本书是一本“工具书”,旨在讲解“开发工具”。如果你想要了解关于如何从头建立一个完好的应用,那么绝大多数“语言”层面的书籍都会有所介绍。
本书分为以下4个部分。
初入江湖——基础篇
这个部分主要简单讲述了如何创建一个简单的小项目,并且对Xcode的界面和基本操作进行一个粗略的介绍。
这部分是为初学Xcode和编程的读者准备的。
第1章 小试牛刀——Xcode初体验
介绍了Xcode的下载方式,并对苹果开发者计划做了简要的介绍,并且带领读者完成一套最基本的流程——创建项目、运行项目以及移除项目。让初学者小试牛刀,尝一尝把玩Xcode的感受。
第2章 纵观全局——布局探
介绍了Xcode的界面布局,详细讲解Xcode主界面每一部分的名称、作用,让读者对这些区域能够有一个粗略的概念,知道一些概念、术语,并且能够快速找到后文所说的部分。会当凌绝顶,一览众山小。
第3章 藏经阁——项目管理
介绍了如何对项目进行配置,包括对应用文件、应用对象以及应用资源等内容进行管理。只有东西收得整整齐齐,搭建良好,应用才能正常运转。
外功修炼——设计篇
这个部分主要介绍了界面生成器(Interface Builder)的用法以及相关技术,主要面对设计师,让初学者和设计师能够借助Xcode提供的可视化界面设计工具来快速设计想要的界面。
第4章 风水宝地——界面生成器
主要介绍了界面生成器的样式、种类以及它们的使用方法。
第5章 万物莫不有规矩——自动布局
主要介绍了自动布局(Auto Layout)技术的使用方式,该技术能够让布局能够更好地适应不同尺寸的设备。
第6章 万法归一——屏幕分类
主要介绍了屏幕分类(Size Classes)技术的使用方式,该技术能够良好地适应不同尺寸的iOS设备。
内功修炼——开发篇
这个部分主要介绍了一些Xcode的高级用法,让读者能够从中学习到更有用的Xcode使用技巧。
第7章 渐入佳境——高级编辑
介绍许多关于“编辑器”(Editor)的高级编辑用法,比如语法感知、重构、迁移、搜索等在文本层级上进行操作的功能,从而更好地完成代码。
第8章 气沉丹田——持久化存储编辑器
介绍“属性列表”和“Core Data”两个存储技术的可视化编辑设计器,完成对存储技术的骨架设计。
第9章 前人栽树——共享代码
介绍库、框架等共享代码的方法原理、使用方法和制作方法,还介绍如何使用CocoaPods来帮助管理代码。
第10章 武功是怎样炼成的——编译系统
介绍编译方案(Build Scheme)和运行目标(Deployment Target)的原理和相关操作。
第11章 谨防走火入魔——调试
介绍Xcode上的调试方法,比如断点、LLDB等方式。
第12章 功力精进的途径——单元测试
介绍Xcode上的代码测试方法,比如功能测试和性能测试等。
第13章 返老还童——版本管理
介绍Xcode上可以使用的代码管理方式,借此开发者可以方便地管理代码,开展多人协作。
第14章 实战是提升实力的唯一真理
介绍真实应用应该如何上架。
随身锦囊——附录篇
这个部分主要介绍一些Xcode有的小功能、小组件、小设置等。
附录AXcode小技巧
介绍Xcode中的一些小技巧,包括快捷键、代码片段、系统设置等。
附录B不二法门——Xcode工具箱
介绍Xcode额外提供的一些好用的功能。
附录C武术套路——模板
介绍Xcode中提供的各种模板,包括文件模板、控件模板等。
附录D你不会独孤求败——求助渠道
介绍获取Xcode帮助的相关方式。
本书使用的Xcode版本
本书结笔于2015年7月,这个时候正值苹果发布了iOS 9、OS X El Capitan、Xcode 7 beta以及Watch OS 2。但是由于这些版本还不是很稳定,因此本书是基于iOS 8、OS X Yosemite、Xcode 6.4以及Watch OS来写的。
本书示例代码
比起教各位如何从头搭建一个完好的应用,不如将一个完好的、已经上架的应用交付给各位。这样各位如果感兴趣在学习如何使用Xcode时也可以自行研究一下真实应用的实际效果。
本书的示例存储在Github上面,地址是:
OC版本:https://github.com/SemperIdem/CrazyBounce-OC
Swift版本:https://github.com/SemperIdem/CrazyBounce-Swift
这个示例提供了一个能够运行在iOS、Mac、Apple Watch三个平台上的简单的弹球小游戏,并且提供了Objective-C以及Swift两个版本。
Xcode还支持许许多多的新奇技术,比如持续集成(Continuous Integration)、AppleScript、Apple事件绑定等内容。这些内容都十分难,我们目前还不能将它们融会贯通,并以简单的语言跟各位分享,因此我们忍痛删除了这些章节。
由于我们学习和使用Xcode不过才几年时间,技术水平有限,因此本书在某些部分一定会有错误。对于每一名发现重大问题的读者,我们都会将你们的名字添加到本书的致谢清单当中。如果你发现了更为重大的错误,比如说大面积的理论误人子弟之类,我们会在本书的下一个版本中为你寄去新书作为感谢。
我们计划在下一个版本中,让本书适用于最新的Xcode、OS X、iOS以及Watch OS版本,另外还会着重添加关于持续集成(Continuous Integration)、Instruments、Playgrounds以及Xcode 7新特性等更多、更新的内容。
期待读者提出宝贵意见,作者邮箱:xcodejianghu@126.com。
2015年7月28日写于武汉理工大学