您的位置:首页 > 移动开发 > Swift

《Switf语言实战入门》读书笔记(1)

2015-12-16 14:03 316 查看
第1章 欢迎来到Swift语言的世界

1.1 起源

1976年乔布斯和好友一起创立苹果公司,让人难以置信的是,这个一开始从车库中打磨出产品的公司在经过创业和原始积累阶段之后,绽放出了让世界惊讶的活力。

1979年,苹果公司开始开发Apple lisa和Apple Macintosh,并且在第二年发布Apple III。追求极致细节的产品设计基因已经开始扎根,同期产品主要面向中高端用户群体,其定价为4000-7800美元。

1983年,售价为9998美元的Lisa数据库发布,一如既往的高端市场定位和优秀的产品设计使苹果公司成为当时发展最快的公司。电影阿甘正传中男主角阿甘有一句台词:“他替我买了一家卖苹果的公司股票,有人说,我这一辈子不用再为钱发愁”,其实这里说的就是苹果公司。

20世纪80年代,乔布斯获得了Stepstone公司的Objective-C语言的授权及可以自己进行发布的编译器和框架,这进一步突显了苹果公司对软件的重视。从此,Objective-C一点一点融入了苹果公司基因,不断回馈能量及血液,并且借助Apple APP生态链茁壮成长,流行于世。

1985年,乔布斯因为公司内部一些特殊的原因离开这家亲手打造的公司,苹果公司在之后连续很长一段时间内处于低迷期,但是依然全力打造极致产品。

1997年,MacOS7.6发布,同年乔布斯回到苹果公司,开始研发MacOS 8,并在同年发布。在随后的时间里,这种划时代的操作系统设计渐渐成为主流。同时,苹果公司也回到了辉煌时期。

2007年,苹果公司发布了Objective-c 2.0,为其增加一些全新的特性,其中最明显的莫过于语法方面的扩展,比如在新版本中消息传递可以通过”.”访问对象方法属性。

Objective-c成就了海量的Apple App开发者,让他们的产品拥有了无限的可能,却也因为自身的开发门槛让大部分应用开发者望而却步,而此时Android已经异军突起,撼大摧坚。

2010年7月,LLVM编译器的原作者Chris Lattner接到苹果公司的任命,开始着手打造Swift编程语言。

2011年,Mac OS X正式上线,并且Osx86计划的努力得到了回报,大批开发者加入了苹果应用的生态圈,苹果公司反击的号角已经吹响。同年,开发者工具包OpenStep改名为Cocoa,直至今日。

2014年6月3日凌晨,在2014年WWDC上发布了基于Cocoa和CocoaTouch框架的Swift语言,一夜之间,各大IT论坛和社区都开始讨论并探索这门横空出世的新语言。

1.2 什么是Swift语言

Swift语言是一种用来编写OS X和iOS应用程序的编译式程序语言,既拥有解释性语言的语法简洁、跨平台等特性,也拥有编译语言的执行效率高、强大及通用的特性。它易于上手,你可以在极短时间内学会它,并快速将它运用于简单项目。

1.3 特性

1.3.1 高级

计算机语言发展史上一大分水岭就是高级程序语言的诞生。由于汇编语言严重依赖于硬件,换电脑就要换语言这种事估计没几个人能接受。所以现在人们都是使用更加易用、更符合人类思维模式的高级语言。这些语言的特点就是让机器来理解人类,让机器尽力来“听懂人话”。

毫无疑问,Swift正是一门高级语言,拥有高级语言特有的特性。高效,易学易编写。它不仅继承了C、Objective-c等编译语言的优点,同时也具有Python等解释性语言的简洁和易用性。

在此之前,不管你将编程当作一项艺术还是一件赚钱的工作,而学习Swift之后,你将会发现编程原来还可以更快乐。(
默然说话:明显广告词,默然表示心虚滴嘿嘿嘿


1.3.2 易上手

Swift语言的发布,极大地降低了Apple开发的门槛,这对于广大的开发者或开发者组织来说,都是一个巨大的契机。Swift也是为此而生。

Swift基本没多少机会让你写出晦涩难懂的代码。它拥有强类型、安全性高的特点,同时也具备相当高的灵活度、可读性。

通过几代程序员们辛勤的努力,而今,程序员已经成为这个时代最大的“脑艺人”群体,而需要理解并完成编程的要求越来越平民话,基本只要你会讲人话,你能就可以从事开发工作。通过使用各种工具,你甚至可以点点鼠标就能生成一款App。

也许,在几周以后,就能在AppStore中看到你自己设计的App。

1.3.3 兼容性

Switf语言无缝连接Cocoa和Cocoa Touch。Apple还会不断更新和升级,最终会使得几乎所有的文档都有Objective-c和Swift两种语言版本。

1.3.4 运行效率

Swift语言使用LLVM编译为机器码,克服了Objective-c的兼容性问题,其内部实现去除了大量的语法糖(
默然说话:语法糖。。。。。意思就是为了让人容易明白而加上的很多不必要的框框套套
)。大大提高效率。据说比Objective-c还快1.4倍。

1.3.5 运行时(Runtime)

Swift和Objective-c的运行时完全相同,这样Swift也可以为老系统写应用了。

1.3.6 可混编

Swift语言将声明和实现都放在一个单元文件中,不用单独编写头文件和实现文件。

虽然Swift与Objective-c的文件组织方式不一样,但Swift仍然可以和Objective-c代码混编于同一个项目内。这对刚初学者用处不大,但对于老手来说,可是一大福音,因为这样就可以直接使用以前已写好的各种Objective-c代码,而不用费力重构为Swift版了。

不过就算是初学者,通过混编,也可以大大减轻编码量——站在巨人的肩膀上呀!

1.3.7 开发工具

苹果提供给开发者的免费集成开发环境(IDE)——Xcode,而它的6版就包括了我们所需要的SDK。当然,你也可以使用微软公司的Visual Studio 2016,它也提供了对苹果软件开发的支持。

1.4 搭建Swift开发环境

工欲善其事,必先利其器。如果要使用Swift来开发Mac OS或iOS的应用和游戏,首先就需要Mac OS操作系统(最低版本10.9.3)的设备和最新的IDE(Xcode 6.0 Release),以及对应运行平台需要的SDK,以上都是在进行开发之前必须准备好的环境。

1.4.1 Mac OS简介

对于长期使用Windows系统的人来说,可能一开始并不习惯这款十分重视用户体验的纯图形操作系统,(

默然说话:嗯嗯嗯,我刚开始用Mac的时候就是这样的感觉了,和Windows很象,但的确有些是让人不习惯的,比如最大化按钮在右边啦,“复制/粘贴”改成了“拷贝/粘贴”啦,找不到剪切啦等等。其实准确的说,Windows在图形化这一块完全照抄了苹果,只是为了避开侵权问题,做了如上的调整而已,Windows山寨苹果的程度还是很高的,所以,也就是刚开始的时候不习惯,用上一段时间,也就没啥了。基本上我的经验就是,遇到问题自己多摸索,还是不懂就问百度。

)。这款基于Unix开发的系统拥有很高的安全性、稳定性。(

默然说话:我用了快3年了,还没重装过系统,就是一直在升级升级升级,而且运气的是,现在Mac

OS已经是全免费了。说到免费,在苹果下面我是遇到了2次,刚付费买了一个软件,然后它就免费了的情况,唉,说起来都是泪呀。

)相比于Windows上多如牛毛的应用和游戏,Mac OS的应用市场虽不缺精品,但数量上较少,功能方面也不算很强大(
默然说话:这是真的,苹果的QQ和Windows下的QQ比较就没法,唉。
),不过这不正好就是你我可以大展拳脚的舞台吗?

1.4.2 Mac OS下载安装

目前Mac OS最新版本为10.11,可以从App Store的更新处进行更新。(
默然说话:我一直使用App Store进行更新,一有新的操作系统版本更新,App Store就会提醒你,及时进行更新就好
)更新过程是一个向导的形式,下一步下一步,按实际情况进行选择就好。

1.4.3 下载并安装Xcode

建议安装最近版的Xcode,目前最新版的应该是7.1.1。

使用App Store进行下载并安装是最有效率的一种方式。



图1.1 使用搜索找到xcode



图1.2 Xcode的最新版(7.1.1)

1.4.4 iOS开发者计划

要成为官方认可的开发者,首先需要在iOS开发者计划中注册,当然,如果你只是在模拟器上测试你写的应用,则不需要注册该计划。注册成功后,你可以无限制地访问iOS开发者中心以及iOS Provisioning Portal。需要注意的是,这里所说的无限制使用的资源是指一些只有加入了开发者计划后才能使用的开发者资源,比如Mac OS的开发者预览版,比如未正式发布的iOS Library等。Apple的开发者注册和应用发布一样,通常需要1—3周时间审核,强烈建议大家加入。

1.5 熟悉Xcode及模拟器环境

Xcode包括源代码编辑器、图形用户界面(UI)编辑器、程序编辑器、调试器以及许多其他实用的功能模块。它使用一个单一的窗口作为工作区,这个工作区被称为Workspace窗口,它承载了大部分我们编写程序所需要的功能和数据。

新版本的Xcode不仅为我们准备了Swift语言、Home Kit和Health Kit,还带来了许多已有特性的升级和扩展。当Xcode安装完成后, 我们可以在应用程序文件夹中右键点击Xcode图标,选择显示包内容,进入Contents\Applications\和 Contents\Developer,从而可以看到里面已经包含了新版本的iOS SDK以及全新的源代码编辑工具,编译器,调试器,界面设计工具以及各种设备模拟器。

1.5.1 升级和改变

简洁易用的Objective C语言继承者——Swift语言。

Playground,实时预览功能,也就是边写代码边看效果。

Scene Kit 3D游戏引擎,让开发游戏变得更加简单。如果仅仅开发在Apple平台上运行的游戏,这是一个优先选择,和其他的第三方引擎不同,它的优化和效率做得更加彻底,毕竟是“一家人”。

Home Kit智能家居,这是一个用来交互控制用户家中连接到iOS设备的全新框架。如果后期的硬件支持足够多的话,这个框架将会大放光彩。

Touch ID指纹识别,支持应用开发,不过到现在为止所开放的接口还太少。前期可能主要用于购物付款之类的功能。

Health Kit可穿戴设备,健康专家,是另一个技术趋势。

Storyboards更加方便的UI设计,其中最大的改变就是wAny/hAny。开发者可以忽视具体设备的屏幕尺寸和分辨率,不用再分别设计view上的控件位置和大小,而是分别设计好普通(regular)和紧密(compact)两种适配类型即可,程序会自动适配。

全面支持Unicode字符集,这意味着什么?最直接的体现就是中文编程成了现实,你可以试试将程序中的变量名、常量名、对象名、实例名都用中文来代替。当然,这只是其中一种运用方式,你可以发挥自己的聪明才智,为其找到更多的应用场景。

1.5.2 第一个Swift语言程序

1. 启动Xcode

2. 在弹出的对话框中有三个选项(如图1.3)。



图1.3 Xcode的欢迎界面

Get started with a playground:创建一个playground单元,它将让你快速体验到playground的特性。

Create a new Xcode project:创建一个Xcode工程,通常我们新建一个项目都会选择此项。

Check out an existing project:打开一个已经存在的工程,这个功能在你将项目代码转移到其他工作站上的时候非常有用。

我们选择Create a new Xcode projec。

3. 在Choose a template对话框中,我们需要选择将要编写的应用程序的类型。单击左侧OS X分类下的Application,并在右侧单击Command Line Tool,然后单击Next按钮。(如图1.4)



图1.4 选择模版

4. 在接下来的对话框中填入你的项目信息(如图1.5)



图1.5 设定新项目的属性

在Product Name中填入helloworld,Organization Name填入你的姓名,Organization Identifier填入你的标识,Language自然是选择Swift。填完之后点Next。

5. 接下就是指定项目文件位置,这里选择文稿,新建文件夹swift(单击左边的New Folder按钮)。创建完毕之后单击Create完成向导。(如图1.6)



图1.6 选择新项目的创建位置

6. 此时工程窗口将打开,默认进入工程的参数设置界面



图1.7 工程打开时的默认界面

点击左侧的main.swift,可以看到Xcode已经自动为我们生成了hello world。

同时按下command和r,程序将开始编译,如果程序通过则会自动运行。在右下角的Output窗口就可以看到程序的输出:

Hello, World! Program ended with exit code: 0



图1.8 右下角有输出结果

Swift与C和OC的不同之处,它允许我们不用在行尾加“;”,而且你也不需要单独编写一个main函数作为入口,在Swift语言中函数是一等成员,编译器会自动将遇到的第一个函数作为入口。而实际上main函数在进入你编写的Swift之前已经默认执行,你的注意力可以放到实际业务处理上了。乌啦!

1.5.3 源代码文件基本组成

Swift的源代码文件后缀为swift。图1.7中间就是一个源代码文件的示例。它包括了以下几个部分

1. 注释,swift可以使用“//”作单行注释,也可以使用“/”和“/”作多行注释,还兼容“/*”和“/”的Javadoc注释还有C#的“///”。适应各种人士,还真是很全面。

2. import对于Java的开发人员来说应该是再熟悉不过了,它就是用于导入别的应用程序为我们所用。让我们可以使用其中的类和方法,这是代码重用的最基础形式。

3. 最后是源代码部分,这里就是我们发挥本领的地方,我们要做啥?都写在这里,计算机就会严格的执行它们,有错报错,没错给出我们想要的结果。

1.5.4 Xcode集成开发环境

Xcode是Apple为开发者提供的一款免费的集成开发环境(IDE),主要用于开发Apple的系列软件,覆盖苹果所有的可编程设备。可使用多种语言进行开发,其中包括Swift。

它自带模拟器,这样可以省却开发者的很多时间,而且界面做得很优秀,下面介绍一下(
默然说话:为英语不太好的童鞋服务,但还是希望
):

1. 整个界面图可以参考图1.6,我们进入Xcode看到的就是这个界面,它可以分成左、中、右三个部分。

2. 左侧是导航栏(Navigator):用于管理项目所包含的各种资源,它是可以切换多个模式的,刚开始可以用鼠标先点点,大概了解一下,后面随着项目的开发,慢慢了解。



图1.9 导航栏

3. 中间是代码编辑区:我们90%的时间都花在这个上面。代码编辑、UI设计就是在这里进行的。



图1.10 代码编辑区

4. 右侧是属性区(Utilities):用于设置所选对象的属性和行为(Action),还可以选择我们需要用到的模版,还有帮助信息。



图1.11 属性和帮助区

5. 中间的下部有两个视图,一个是debug的视图,另一个是控制台的视图,用于控制台程序输出信息,刚刚的Hello World就是在这里输出的。



图1.12 debug视图和控制台输出视图

1.5.5 iOS模拟器

最好真机测试,但模拟器毕竟是方便的一种方法。

Xcode提供了多种模拟器:iOS模拟器、Home Kit模拟器、Helth Kit模拟器。我们当然是重点讲iOS模拟器。

打开Finder,在应用程序中找到Xcode.app这个文件,右击它,然后选择显示包内容。



图1.13 右击Xcode.app

进入Contents/Developer/Applications,可以看到如图1.14的模拟器,有两个,一个是iPhone的模拟器,一个是Apple Watch的模拟器。



图1.14 Xcode.app自带模拟器

选择Simulator.app(iPhone模拟器)之后,根据你的计算机硬件的不同,可能需要等待一段时间(
默然说话:我等了快2分钟,额滴神呀。。。。
),之后就会进入iOS系统。(
默然说话:我的是iPhone9.1,不过有点郁闷的是,全英文的。。。。。


点击菜单Hardware并选择Devices,弹出的列表中有当前模拟器支持的所有iOS设备。(

默然说话:只更改了屏幕的尺寸,并没有更换iOS的版本。比较怀疑iPhone

4S能不能跑iOS9.1。iOS8就已经显得比较慢了,跑9,还是比较怀疑的。



按Command+shift+H就是按Home键,按Command+L就是锁屏。鼠标拖动就是用手指划屏。

1.5.6 体验Playground

Playground就是一种在编写代码时可即时预览代码运行效果的功能。可以节省时间。

打开Xocde,选择Get started with a playgro



图1.15 Xcode的启动界面,选择Get started with a playground

之后进入创建playground项目的选项框,需要取名和决定使用的平台。点击Next之后,选择保存位置。然后点击Create创建完毕。



图1.15 选择平台和项目名称

这时就创建好了一个playground单元。在中间我们会发现,代码编辑区域又被分解成了两个部分,左边是代码,右边是预览。而且预览区域是及时的。即你刚写完的代码,在右边区域就能预览效果。



图1.16 playground单元的编辑区和预览区

1.6 Apple产品历史

使用Apple的平台开发应用是需要根据应用所运行的平台和产品做特殊设置和优化的,比如iOS设备上的应用界面,官方是会对即将需要发布的应用严格审核的。

1977年,Apple II发布。其后续产品在随后10多年里持续为其盈利。

1984年,Apple发布第一款操作系统System1.0,随后产品中一直基于此升级优化。

1990年,Macintosh Classic发布。扩大的Apple的盈利能力。

1998年,iMac发布,它是一体机的鼻祖。

2001年,iPod发布,与iTunes音乐商店配合,形成完整的软硬件链条。

2007年,iPhone发布,智能手机第二大生产产商。Objective-C2.0,让苹果开发者浪潮再次掀起。

2010年,iPad发布,填补了智能手机和笔记本电脑之间的空缺。又一次改变了世界。

2011年,借助OSX86计划,进一步提升了苹果的兼容性,降低了开发的门槛,大量开发者和用户跟进。

2014年,Swift的发布,进一步大大降低开发门槛。在未来,Apple的应用生态圈将会迅速壮大,而能带给开发者的,将会是更大的机会和挑战。

2014年9月9日,Watch发布,穿戴设备的出现创造了一个新的蓝海,它会不会又一次改变我们的生活习惯和方式?

1.7 小结

本章重点介绍了历史,也介绍了Xcode的基本使用和操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息