译者语:本来就很多话想写在这里,比如为什么要学iOS开发,或者说为什么要学一门技能,是为了找个饭碗,还是为了避免一片雄心壮志之余只差两个码农的尴尬,亦或是临渊羡鱼之后自己退而结网,也能让自己的想法变成产品。本来这个序言很长,直到我临近发布的前一刻把它们全都删了,因为我看到一则新闻,觉得写什么都是多余的:
活到81岁你会干嘛?她选择为 iOS 开发软件
81岁的老奶奶Masako Wakamiya
她是一名 iOS 开发者,今年已经 81 岁了,她从 60 岁才开始使用电脑。学习使用电脑之前,Masako 在日本的一家银行工作了 43 年的时间,与电脑技术基本上没有交集。不久之前,Masako 推出了她自己的首款 iOS 应用 Hinadan。
没错,就是这样,所谓梦想,念念不忘,必有回响。
我们先来了解一点背景知识:
Swift是苹果公司于2014年WWDC(苹果开发者大会)发布的新开发语言,用于搭建基于苹果平台的应用程序。其易学易用的特点很快成为了iOS开发中最流行的语言,但是由于Swift版本和对应的开发工具版本更新太快,导致市面的的教程书籍始终处于落后状态,比如现在已经是Swift 3.0了,但是我在书店中还看到大部分教材处于1.3状态,2.0版本都已经算是新书了。这对想要学习iOS开发的朋友造成了极大的障碍,但是有市场就会有产品,无论苹果公司更新的再快,总是有人能跟上它,这就是我们即将接触到的iOS Apprentice。
iOS Apprentice堪称iOS开发经典教程,不同于国内的教材套路,iOS Apprentice一共4课,每一课都将从0开始带你完成一个可用的app。而每一课app所包含的内容则由浅至深,循序渐进,整个课程相当的独具匠心。但是苦于木有中文版(T T),只能生啃英文了,所以我打算在这里把我的学习过程记录下来,同时也给英文阅读障碍的朋友提供一些力所能及的帮助,相当于把iOS Apprentice系列的4本书在这里翻译一下,并且结合一些自己的心得提供给大家(_)。我所使用的版本为最新的iOS 10及Swift 3.0版本教程,保证大家可以跟我一起愉快的进行开发。
千里之行始于足下,开始吧。
Tutorial 1: Getting Started
首先是整体预览一下整个系列的内容(What’s ahead: an overview)
iOS Apprentice共分为4个自学教程,课题从初级向中级的循序渐进展开,在每一个自学教程中,你都将从0开始直到完成一个独立的APP,我们先来预览下这些自学教程。
Tutorial 1: Getting Started
在这个最初的自学教程中,你将通过完成一个叫做‘Bull's Eye(我至今无法理解为啥会起这么个名字)’的游戏APP,在一种非常轻松的状态下来学习如何使用Xcode,编辑界面以及swift语言。
Tutorial 2: Checklists
在本系列的第二个自学教程中,你将会创建一个属于自己的待办清单(to-do list)app。你将会学习一些所有iOS app都会用到的一些设计原理基础。并且此刻也是你做一个真正的app的时候。
to-do list
Tutorial 3:MyLocations
在本系列的第三个自学教程,你将开发一个关于定位的app,它会保存你走过的位置,这非常有趣。在这个过程中,你将会学习关于Core Location,Core Data,Map Kit,和其他一些知识。
Tutorial 4: StoreSearch
移动应用经常会访问一些网络服务,并且这也是你将要在本系列的最后一个自学教程中做的事情。你将会做一个非常时髦的app,它可以使你在iTunes store中使用http请求以及JSON搜索各种应用。
Let's get started and turn you into a real iOS developer!(_)人生的第一次转职即将正式开始。如果你感到坚持不下去的时候,请回到最开头的部分看一看别人家的老奶奶,都已经81了_
计算机的语言
尽管iPhone企图假装自己是一部电话,但是它实际上是一台相当精巧的高级电脑,只是碰巧拥有一点电话的功能。
像其他任何电脑一样,iPhone以0和1的方式进行工作。当你写一个可以运行在iPhone上的软件时,你不得不以某种方式将你头脑中的idea转换这些计算机可以理解的一票0和1。
幸运的是,你不需要亲自的书写任何一个0或者1.那对我们人类大脑的负荷实在太大了,大到负担不起。而另一方面,日常英语又没有严谨到足够支撑计算机编程的地步。
所以,你将要使用一种中间语言,swift,它有一点像英语,我们可以轻松简单的理解它,同时也可以很好的被翻译为某种计算机很容易理解的语言。
我们来看看,这是计算机讲话的方式:
实际上,在计算机看来,它们是长成这个样子的:
看不清楚不要紧,反正更加看不懂了( ̄∇ ̄)这里的movl与calll指令仅仅是为了让人能比较容易的读懂而已,所以,你读懂了吗?反正我是不懂。(^^)!
当然,用这种神秘的语言来写程序是没啥不行的,并且这就是上古时代的程序猿在干的事情,在哪个电脑需要数百万个晶体管,并且体积占据整个房间的时代。——但是在现代,我比较喜欢也应该像这个样子来写程序。
func handleMusicEvent(command: Int, noteNumber: Int, velocity: Int) {
if command == NoteOn && velocity != 0 {
playNote(noteNumber + transpose, velocityCurve[velocity] / 127)
} else if command == NoteOff || (command == NoteOn && velocity == 0) {
stopNote(noteNumber + transpose, velocityCurve[velocity] / 127)
} else if command == ControlChange {
if noteNumber == 64 {
damperPedal(velocity)
}
}
}
上面的代码是一个音频合成器程序的片段(如果你能读懂英语的话,其实上面的代码是干嘛的一目了然)。它看起来就像是某些我们可以理解的东西了。即使你以前从未编程过,你也可以大致的指出它做了些什么,这几乎和英语一样。
Swift是一种结合了传统面向对象编程与一些模块编程特点的热门新语言。幸运的是swift与其他流行的语言相似的方面非常多,所以,如果你已经熟悉了C#,Python,Ruby 或者Javascript,你会觉得swift有一种家的温暖。
虽然Swift并不是做app的唯一选项,直到最近,iPhone和iPad还在用Objective-C来编程,这是一种由身经百战的C语言扩展来的一种面向对象语言,但是因为它继承了C语言的不完善处,导致其不能完全胜任现代开发者的需求。这就是为什么苹果创造了这种新语言。
Objective-C虽然当下还比较通用,但是显然未来iOS开发的主流是Swift。所有聪明的孩子早都已经开始用它了。
C++是另一个在C语言的基础上扩展而来的语言,它非常强大,但是作为初学者,我们应该尽量避免与其遭遇。我在这里提及C++仅仅是因为需要科普一下这种语言也可以做iOS应用而已。C++和Objective-C还有过一场非常邪恶的联姻(绝对没有任何牧师的见证),其子名为Objective-C++,你偶尔会听到这个名字,在噩梦中。
我可以以深入论述Swift的特点来开始我们的iOS Apprentice(iOS自学教程),但是考虑到你基本会中途睡着,所以我们会以浅入深出的方式来讲解这门语言。
在一开始,一些基本概念,什么是一个变量,什么是一个对象,你如何调用一个方法等会比做App的细节更重要,当然,慢慢的Swift的所有秘密,都会逐一展示给你。
做好准备来写你人生中的第一个APP了吗?从下一节我们正式开始。
网友评论