前言
为什么要写这本书
苹果公司在2014年6月的WWDC(Worldwide Developers Conference,苹果全球开发者大会)上向公众展现了全新的iOS 8移动操作系统和Yosemite桌面操作系统。作为开发者,大会开幕之前的任何爆料,我都是不会错过的。在大会开幕的前一天,我得知本届大会的宣传标语为:编写代码改变世界(Write the Code.Change the World)。历届WWDC的宣传标语都是以全新、卓越、领先、创新、引领等作为关键词,而这次却使用了非常接地气的“编写代码”一词,心里感觉怪怪的。在WWDC结束的那一刻,我深深地体会到苹果为什么使用这个词,因为此时此刻,苹果做出了一个令所有程序员都为之惊讶的改变——推出了全新的程序设计语言Swift。Swift无疑是本届WWDC中贴近开发者的最大亮点。
为什么苹果要抛弃已经使用了几十年的Objective-C,而去开发一门全新的程序设计语言呢?按照苹果官方的说法,Objective-C这门语言太老了,它无法提供现代语言所具有的那些功能,而Swift语言具有现代、安全、快速等特点。其实在我看来,这是苹果极其强烈的控制欲在作怪。
在写作本书之前,我已经写过两本关于iOS开发的书,毫无疑问它们都是在讲如何使用Objective-C开发App的。可以说Swift是我写作这本书的最大挑战,并且它给我的身心造成了极大的摧残。因为在WWDC开幕之前,我基本上已经完成了第三本关于Objective-C图书的初稿。可谁又知道,Swift的出现如同晴天霹雳、飞来横祸,让我有种被秒杀的感觉。就这样放弃吗?不行,此时此刻,我想到了八九年前每晚玩《魔兽世界》的情景——不断地“跑尸”。为了完成自己的iOS开发三部曲,必须发扬当年“跑尸”跑不死的精神。总的算下来我的第三本书前后共写了两年的时间。
作为苹果公司独立发布的支持型开发语言,Swift语言的语法内容混合了Objective-C、JavaScript、Python的特点,语法简单、使用方便、易学,大大降低了开发者的入门门槛。同时Swift语言还可以与Objective-C混合使用,对于用惯了高难度Objective-C语言的程序员来说,学会Swift更不在话下!
Swift允许开发者通过更简洁的代码来实现更多的内容。在WWDC 2014发布会上,苹果演示了如何只通过一行简单的代码完成一个完整图片列表加载的过程。另外,Swift还可以让开发人员一边编写程序,一边预览自己的应用程序,从而快速测试应用在某些特殊情况下的反应。
相信对使用Objective-C语言开发过App的程序员来说,Objective-C有着诡异的语法,并且是一门与其他C语言风格迥异的编程语言,学习难度可想而知。但是,在过去的20年里,苹果只支持Objective-C,这迫使广大程序员不得不学习和使用艰涩难懂的Objective-C语言。
随着Swift语言的到来,这种简单、好用又安全的编程语言将吸引更多的开发者加入,让苹果软件生态圈更加繁荣。如此,“果粉”将可以在App Store和Mac Store中下载到更多称心如意的App。从某种意义上说,Swift语言是苹果的一项新的商业战略。
对Swift语言来说,相信大部分的读者都是从2014年6月开始接触的,而之后的几个月也应该在刻苦地学习Swift这门语言。就像实际生活中我们学习英语一样,精通英语的语法和使用英语进行相互沟通并不完全是一回事。学习程序语言也是如此,虽然程序员可以在短时间内掌握Swift的语法,但是使用它来开发App是另一个层面上的事情了。本书每一章都通过各种各样相对独立的项目,让读者了解iOS开发中最常用的几个方面的程序设计技能,包括Interface Builder、自动布局和Size Class、表格视图、导航控制器和标签控制器、远程访问及Facebook集成等。本书能让那些已经掌握Swift语言的程序员尽快上手开发实现各种功能的App,体验开发的乐趣。
读者对象
本书是为想通过学习基本的工具和技术,开发出具有实用功能的、可以在iOS平台上面完美运行的App的人所准备的。
本书读者主要为:
·iOS设备的用户和爱好者。
·iOS应用程序业余开发者,使用Objective-C开发过简单App。
·iOS应用程序专业开发者,使用Objective-C开发过商业App。
·已经掌握苹果最新的Swift语言,正准备进行项目开发的程序员。
·开设相关课程的大专院校学生。
如何阅读本书
在阅读本书之前,需要具备以下几方面的知识和硬件条件。
·面向对象的开发经验,熟悉类、实例、方法、封装、继承、重写等概念。
·有Swift或Objective-C、C、C++的开发经验。
·有MVC设计模式开发经验。
·有简单的图像处理经验。
·一台Intel架构的Mac电脑(Macbook Pro、Macbook Air、Mac Pro或Mac Mini)。
如果加入了iOS开发者计划,还可以准备一台iOS移动设备。
本书通过大量的实例项目来讲解如何使用Swift开发简单的应用程序,虽然每个App所实现的功能都不复杂,但是都能帮读者了解每章重点讲授的知识点和技巧,只有“打通”每个点以后,一个完美的App才能流畅运行。如果你是一名初学者,请一定从第1章开始学习。
本书内容共12章,下面概述各章内容。
第1章介绍了Swift语言的特性、Playground编辑器和iOS模拟器,重点介绍了开发iOS应用程序的集成开发环境Xcode。
第2章和第3章通过一个简单计算器应用程序向大家介绍Xcode的用户界面搭建工具Interface Builder、Outlet与Action关联、MVC设计模式、应用程序委托和视图控制器。
第4章通过购物应用程序向大家介绍如何使用故事板组织和管理视图。
第5章介绍表格视图的相关知识,包括与表格相关的委托协议,并且继续完善购物应用程序。
第6章介绍自动布局的相关知识,当程序员使用Interface Builder搭建App的用户界面时,往往要考虑不同分辨率和屏幕尺寸的设备,有时候一个场景需要做出10套左右的界面。但是通过自动布局可以让我们只需搭建好一套用户界面,就可以在所有的设备上完美运行。
第7章介绍集合视图的相关知识,通过在购物应用程序中使用集合视图来显示各种商品的缩略图。
第8章通过制作IMDb电影信息查询程序,向大家介绍如何使用Swift语言进行远程服务器调用,并将获取的XML数据进行整理并显示到屏幕上。
第9章使用Photos.framework框架实现在应用程序中获取照片库或摄像头所拍摄的照片。
第10章介绍如何在应用程序中整合Facebook和Twitter社交分享功能。
第11章介绍如何进行应用程序的调试。
第12章介绍如何在应用程序中进行文件和文件目录的管理。
勘误和支持
由于作者的水平有限,加之编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,特意留下联系的电子邮件liuming_cn@qq.com。你可以就书中的错误和我进行沟通,当然,遇到任何技术问题也可以与我联系,我将尽力为你提供最满意的解答,期待能够得到你的真挚反馈。另外,书中的资源文件可以从华章网站(www.hzbook.com)下载。
致谢
首先要感谢的是一直在背后默默支持我的老婆——刘颖。因为没有她就没有现在的我,非常感谢她在我写书的时候没有像平时那样唠唠叨叨,为我创造了一个轻松的环境。
感谢我身边的每一位充满创意和活力的朋友——张燕、卢红玲、秦琼、杨晓龙、陈雪峰、朱舸、赵顺利、吴永新,以及名单之外的更多朋友,感谢你们长期以来对我的支持和帮助。
感谢机械工业出版社华章公司的编辑杨福川老师,在这三年多的时间中你始终支持我的写作,你的鼓励和帮助引导我能顺利完成全部书稿。
最后感谢我的爸爸、妈妈、岳父、岳母、小舅子和小舅子的女朋友,感谢你们时时刻刻为我灌输信心和力量!
谨以此书献给我最亲爱的儿子——乐乐,以及众多热爱苹果公司的朋友们!
刘铭