0.1 本书写作缘起
Swift 语言是苹果公司在2014年苹果全球开发者大会(WWDC)上公开的新编程语言,也是快速、现代、安全、交互的新一代编程语言,如图0-1所示。
图0-1 对Swift语言的官方评价:快速、现代、安全、交互
Swift 语言横空出世,正如苹果一贯的作风,保密工作做得相当好,事先感觉不到任何征兆,事后才发现苹果为之准备已久。
从2010年Chris Lattner 大牛开始筹划到现在,Swift 语言已经存在4年左右了。苹果的官方教程指出:“为了给 Swift 打好基础,苹果公司改进了编译器、调试器和框架结构。我们使用自动引用计数(Automatic Reference Counting, ARC)来简化内存管理。我们在 Foundation 和 Cocoa 的基础上构建框架栈并将其标准化。”我们也看到,现在开发 Swift 语言相关的应用可以完全无缝地集成核心库、使用已有的 Objective-C 库、与 Xcode 完美兼容。更重要的是,在官方手册上,我们也看到了完整的支持,大部分示例都以两种语言给出。
不凭别的,也不分析苹果的商业动机,就凭这种长久而精心的筹划和准备,我们也有理由相信 Swift语言代表了iOS开发的未来,Swift语言很有可能将代替 Objective-C成为iOS开发的首选语言。
而这种准备,同样得到了市场的热烈响应。Swift 语言一经推出,就迅速获得了各方的热捧。国内开发者社区在短短9天内就把英文官方教程翻译为近700页的中文教程,而各大培训机构、在线教育社区也纷纷推出自己的教程,可谓各显身手。Swift 语言一出现就有人预测,也许它在 TIOBE 语言排行榜上第一次露面就将杀入前20名。事实证明了这个观点,它实际的成绩是第16名,最新的排名是第24名。这半年多以来,Swift 也真正获得了程序员社区的支持,在 Github 活跃项目第18 名,国外出版的 iOS相关的开发书籍和课程,都已转用Swift编程语言!
鉴于Swift语言本身的优良特性、与既有库的良好兼容性,我们相信Swift语言将有一个良好前景,所以我们筹划出版了本书的第1版,并于2015年的5月,基于Swift1.2对全书的知识点和代码进行了更新,完成了《Swift语言实战入门(第2版)》的迭代。
书名叫实战入门,基于两点考虑:一是由于Swift语言是新的编程语言,环境都还处于演进迭代状态,在这么短的时间里,谁也不敢说自己是专家,于是乎我们将此书定位为“入门”,它只是我们自身学习Swift语言经验的一些提炼和总结,希望能对想了解 Swift 语言的朋友有所帮助。而另一方面,Swift 语言作为编程语言,开发出实用的产品才是其最大的价值所在。Swift 语言不仅仅是提供一些语法糖,更重要的是它能使用 Cocoa、Foundation、UIKit 等已有的框架来完成实际产品的开发,同时又能对现有的代码提供良好的互操作支持,所以完全能满足实际的产品开发需求。目前市面上实际讲授 Swift产品开发的内容太少了,所以我们将书籍本身又提升了一个层次,目标是真正使用Swift语言开发出实际可用的产品,故定义为“实战”!
希望我们的《Swift 语言实战入门(第2版)》能成为大家学习 Swift 语言的入门书籍,同时希望大家能借助本书,开发出真正具有实用价值的产品。
0.2 本书内容简介
本书分为11章。
第1章介绍Swift语言及其开发环境,使用 Xcode 编写我们的第一个 Swift 程序——著名的Hello World!在第1章中,我们也将了解 Swift 语言开发环境的新特性——Playground 功能。
第2章、第3章、第4章分别从基础、进阶和高级特性三个层面介绍Swift语言的语法。我们不仅介绍语法,同时会与其他语言进行对比,指出它们之间有意思的差别。无论是对老手还是对新手而言,了解基础知识不无裨益。
从第5章起,我们正式开始为 iOS 应用开发做准备,介绍在 iOS开发体系中既有的 Foundation 及相关底层的Core Data框架。因为只有掌握这些内容,再结合第6章、第7章、第8章的功能,我们才能够真正地掌握iOS开发,否则不过就是熟悉了一门计算机编程语言的语法而已。
第6章是Swift与Objective-C互操作的介绍。Swift语言的互操作性,让其更方便地集成现有的Objective-C成果,尤其是引用第三方开发库。鉴于本书的实战特性,本书将介绍一些特色鲜明的第三方库。
第7章是界面开发的基本控件的介绍,第8章是高级控件的介绍。正是这些控件构成了 iOS 开发的基础,没有这些控件,就没有丰富多彩的 iOS 应用。在这两章中,我们将强烈地体会到,Swift 语言作为一门产品开发编程语言,已经完全适合开发成型的产品。
第9章是运用Swift语言开发2048游戏项目的介绍。在本章节中详细地讲解2048游戏从界面搭建到成品实现的逻辑与过程,展示出这款游戏是如何从一个简单的按钮,一步步完整实现的。
第10章是对iOS应用开发的一些基本逻辑和设计模式的总结。通过这一章的简单介绍,读者可以提升看问题的层次,了解iOS类库和应用背后的机理。
第11章讲述产品上架和发布的过程。我们学习Swift语言,其实并不仅是为了学习一门新的编程语言,而是为了真正做出产品。而做出产品,也绝不仅仅是为了自娱自乐,在模拟器上自赏,更多地是为了和朋友们分享。所以本章就介绍了如何将应用打包和发布到 App Store的过程。
从上面的介绍可以看到,本书从粗粒度的角度来划分,分为三大部分:第一大部分是基础和语法部分,通过这一部分的学习,你可以了解Swift语言是一门什么样的编程语言,并学会使用Swift语言编写简单程序。而学会了第一部分的语法对开发实际产品来讲是远远不够的,还需要对第二大部分,即开发框架和库部分进行学习。在现在这个时代,开发实际的产品避免不了大量地使用各种开发库、开发者工具包(Developer Kit)。所幸尽管 Swift 语言刚刚面世,但是苹果公司已经完成了大量开发库底层接口的封装,且提供了桥接技术,让我们能够方便地使用现有的成果。第三部分是实战部分,详细介绍2048游戏的开发,以及生产环境开发与发布所需要了解的一些情况。本书就这样分为三个部分,共11章,从语法入门步步递进到实战,很好地呼应了本书的定位。
0.3 实战开发2048游戏项目简介
本书定位为实战入门,除了入门语法、实战类库及示例之外,更具亮点的是在本书的第9章,我们以一个完整的2048游戏的设计过程和代码实现展开。而2048游戏开发的逻辑,也稍有点缀地穿插在本书其他的章节介绍之中。
在这里简单介绍一下2048游戏。2048游戏是2014年的休闲游戏中,继 Flappy Bird 之后,又一款火遍全球的游戏。游戏的画面很简单,进入游戏画面,一开始出现的是4×4的16个方格画布,并且有随机的2和4的数字块不断随着版面的划动而产生。方格画布大部分都是空白颜色(也有可能是灰色)的,当玩家划动合并出现新数字之后就会改变颜色。
玩法规则也非常简单,一开始方格内会出现2或者4等这两个小数字,玩家只需要向上下左右其中一个方向移动出现的数字,所有的数字就会向滑动的方向靠拢,而空白区域就会随机出现一个数字,相邻的同大小数字在划动时会相加合并,然后一直这样不断相加,最终得出2048这个数字就算游戏过关。
在第9章的实战示例中,我们通过从最基本的游戏入口界面开始设计,一步步到游戏画布、数字产生、手势响应、数字滑动、数字合并、游戏设计等,最终实现2048游戏项目的开发。
0.4 学习步骤安排及面向对象
毋庸置疑,在学习一门新的编程语言时,最主要的方式和途径是大量的练习,如果没有大量的练习,只是看了书,学了语法,那不是学会,充其量算作了解。
所以在本书的示例中,很多例子我们都给出了核心部分完整的代码,只要是认真对照,肯定可以实现示例中的效果,而练习多了,就能把语言学会。在学习 Swift语言之前,这里介绍一下相关的学习要求和大致的步骤。
本书面向的读者是想利用 Swift语言开发实际应用的开发者,无论是学生,还是社会工作人士;无论是学习编程语言的新手,还是编程语言的高手;无论是 iOS 开发体系内想要学习一门新的语言的朋友,还是从其他开发阵营转过来的达人,都能在本书中得到一些收获。相对于完全没有编程基础的同学,我们建议你同时辅以官方的《The Swift Programming Language》来进行学习。
本书对读者的技能要求第一条是,能够熟练操作计算机。但是这远远不够,因为开发苹果的应用不是那么简单,你得有配套的资源供给。
首先你得有一台苹果计算机,可以是Macbook Air、Macbook Pro、iMac,甚至是Macbook。里面配备4GB以上内存,要是配有固态硬盘就更好了!
软件方面的设置我们在第1章会详细地讲到,但是这里讲一下所需的软件环境。请在苹果计算机上安装 10.10 以上的 Mac OS X 操作系统,安装 Xcode 6.3及以上版本的 IDE。如果没有Xcode或者不在Mac 系统上,只是写出来一些文本代码,而无法进行运行调试。不过有另外一个选择是优才网上的云编程功能已支持Swift 在线运行代码,如图0-2所示。
图0-2 优才网云编程,网页上运行Swift代码
其他方面的条件要求,则是如果你来学习Swift语言,只是编写玩玩,大可以在模拟器上运行效果。如果你要做真机测试的话,请至少具备如下设备之一:iPad、iPhone、iPod touch,同时需要运行iOS 7以上操作系统。除些之外,你还得有开发者账号。
无论是下载最新版本的 XCode,还是真机调试,你都得有开发者账号,这里对苹果开发者中心和开发者账号也做一个简单的说明。
如果仅仅是在模拟器上编写程序,你只需要免费的开发者账号。登录苹果的开发者官网,我们直接进入iOS开发者子站http://developer.apple.com/iOS,打开如图0-3所示的页面。
点击Member Center,进入登录界面。
图0-3 苹果 iOS 开发者网站首页
如果你有开发者账号,输入用户名、密码,直接点击Sign In,否则直接点击 Register ,注册一个开发者账号,如图0-4所示。一步步完成之注册之后,再登录 iOS 开发主页面。里面就提供了各类的文档、视频教程和示例代码等各种开发者资源的链接。
图0-4 苹果开发者中心登录界面
免费下载的 Xcode以及相关的 iOS 8 SDK,内置了多个模拟器,可以支持在 Mac计算机上创建和运行 iOS 应用程序。但是,如果编写的程序要正式分发,光有模拟器的运行是远远不够的,因为模拟器不支持某些硬件设备才特有的功能。所以一般应用都先需要真机调试,然后在稳定和测试通过之后,分发到 App Store上。但是,无论是真机调试,还是应用分发,免费的开发者账号是不支持的。我们需要注册收费的开发者计划(Apple Developer Programs)。收费的开发者除了可以提交应用之外,还有一个重要的好处,就是能提前获得一些技术资源,比如Swift语言发布当天,相关的Xcode 只有收费开发者才能下载。
有关收费账号的注册方法,在本章参考中有相应的说明链接。或者大家可以搜索“注册苹果开发者账号”找到相应的资源。而咱们只是让大家熟悉一下苹果的开发者中心的流程,并简要介绍一下相关术语和计划,就不在此赘述了。
点击图0-3 中的 Programs,我们能进入苹果开发者计划介绍的页面,这里提供了两种类型的开发者账号类型。一个是iOS开发者计划,一个是Mac开发者计划,两种开发者计划分别对应的是移动设备开发和Mac桌面软件的开发,如图0-5所示。
图0-5 苹果开发者计划介绍页面
虽然在页面上只列出了针对个人开发者的99美元一年的账号,如图0-5所示,但是实际上,还有一种类型的账号是 299 美元一年的企业账号。个人账号同企业账号最大的不同,就是个人开发者开发的应用需要提交到苹果App Store,应用审核通过了才能被公众下载使用。而企业开发者账号开发好的应用,使用企业证书打包就可以进行分发,真机就可以使用了。
个人账号在申请的过程中,除了花费不同,更大的不同还有审核周期和提交资料的不同。
上面我们简单介绍了苹果的开发者计划,但对于初学者来说,我们不需要这么急切地得到开发者账号,可以先用免费的账号学起来。
学习的最佳方法,是自己依据教程或者网上素材,建立起开发者环境,依据本书的学习,一步步完成代码编写。体会示例制作的全过程,以及修复在代码中出现的问题。遇到解决不了的问题时,可以随时通过本书的相关网站,与老师、同学们交流。
其次的学习方法,是自己从网站上下载代码,直接运行,然后修改相应的功能,体会功能和代码的编写,也可以达到学习的效果。遇到问题,再反馈交流。这种学习方法,我们也是赞同的。
最差的学习方法,是看一遍书或者下载了代码,运行一下就完了。这不是我们要推荐的。因为这种情况必然导致眼高手低的情况出现,所以我们反对这种学习方式。
0.5 本书特色
这里需要重点介绍一下本书的特色。
本书特色首先体现在内容的实用性上。目前市面上鲜有关于Swift语言正式版编程语言类的指导书。网络上繁杂的入门教程和火爆出现的视频教程也大都在讲语法,不过是官方教程的翻版。而本书内容立意于实战,以流行的游戏2048为例来讲解Swift语言的实际应用方法,注重实战,使你可以学以致用。
本书特色之二是我们提供了更为互动的学习方式,读者可以通过扫二维码的方式方便地打开Swift课程教学视频,同时页面还与答疑专区、勘误页面相连,使你可以随学随问。并且本书提供优才网一个月VIP特权,使你能够免费观看 Swift 公开课视频课程。
本书特色之三就是写作团队实力过硬。在优才网创始人伍星和Swiftist.org管理员梁杰的组织下,本书的写作小组得以组建。本书写作小组成员包括:优才网CEO伍星、竞鹿的 CTO 罗飞、优才网CTO兼教学总监刘志华、软件工程师王浩力、iOS开发工程师刘蕾。同时感谢优才网团队教研工程师卢兴占、张友林,以及众包人工智能 ria4 的李文广对本书的大力支持。正是写作团队的一起努力,才促成了本书的面世。
0.6 小结
本章介绍了本书的写作缘起、主要内容以及图书特色,同时也提供了建议的学习方法。本书注重实践,并配合以相应的教学互动平台,希望你通过本书能够得到所需技能。若有任何问题,可扫二维码进入答疑界面。
优才网课程答疑二维码
本章参考:
1.如何注册免费的开发者账号 http://www.25pp.com/news/news_60759.html。
2.如何注册苹果开发者个人账号 http://www.pc6.com/edu/62315.html。
3.如何注册苹果企业开发者账号 http://jingyan.baidu.com/article/4dc408489ebbb2c8d 946f12c.html。
代码包资源下载地址:
Rar 格式:http://t.cn/RZwqIAd
Tar.gz 格式:http://t.cn/RZwqI2i
Zip 格式:http://t.cn/RZwqI2Y