Chapter 4编程
Hello World App的解释swift
作一个app简单吗?我但愿你享受第一章的阅读而且已经制做了你的第一个iPhone app.
app
在咱们继续探索iOS SDK以前,咱们暂停一下来近距离的看下这个Hello World app.这对你理解Swift语言的基础和app的内部工做状况来讲颇有帮助.
框架
迄今为止,你跟着一步一步的来制做Hello World app.像你经过阅读这一章,你可能会在脑海里有一些疑问:编辑器
storyboard里的ViewController是这怎么和ViewController类里面的ViewController.swift文件联系上的呢?ide
showMessage()方法里面的代码块的意思是什么?它是怎样告诉iOS来显示一个Hello World信息的?学习
@IBAcation 关键字的意思是什么?ui
"Hello World"按钮背后是什么?按钮是怎样察觉轻触而后触发showMessage()方法的?spa
运行按钮在Xcode是怎样工做的?你说的"编译一个app"是什么意思?翻译
以前我想让你专一于探索Xcode环境因此我没有解释任何以上的问题.然而,对每一个开发者来讲,理解代码背后的细节和领会iOS编程的基本概念是相当重要的.技术概念可能会有点难理解,特别是,若是你以前没有任何编程经验.不要担忧这刚刚开始.在以后的章节,随着你继续学习和写更多的代码,你将对iOS编程有一个更好的理解.尽你最大的努力去学习,越多越好.
咱们来看一个真实生活的案例
想象一个电视遥控器.它能够在远距离很方便的无线遥控电视的音量.切换电视频道,你仅仅须要按频道数字.增长电视音量,你只要按音量+按钮.
我来告诉你.你知道当你按下音量按钮或者频道按钮发生了什么吗?可能不知道.我相信咱们大多数人不知道遥控器是怎样无线遥控电视机的.你可能会想到遥控器发送一个肯定的信息给电视机而后触发音量增长或者切换频道.
在这里例子里,跟你互动的按钮一般被描述成接口,隐藏在按钮以后的内部细节归类为实施.接口经过一条信息与实施联系起来.
这个概念一样能在iOS编程世界里实现.storyboard里的界面是接口,代码则是安装启用.用户界面元素(如按钮)经过信息来与代码沟通.
具体的说,若是你回到Hello World项目,你在视图里添加的按钮就是界面.Viewcontroller类里面的showMessage()方法则是实施(implementation).当有人按下按钮,它发送一个showMessage的信息给ViewController来唤醒showMessage的方法.
咱们刚才演示的是一个面向对象工程(OOP)中很是重要的概念,叫作封装.showMessage方法的实施隐藏在外部世界(如界面).Hello World按钮不知道showMessage()方法怎样工做.它所知道的是它须要发送信息.showMessage()方法经过在屏幕上演示一条"Hello World"信息处理其它的.
Quick note:和OC同样,Swift是一个面向对象工程(OOP)语言.大多数app中的代码用一样的方法处理一类对象.在这里我教你OOP概念不是想要把你吓跑.继续阅读.你会学习更多关于OOP的内容.
触摸的背后
如今你应该理解UI里的按钮是怎样和代码联系的,咱们来看看当一个用户按下"Hello World"按钮实际上发生了什么?"Hello World"按钮是怎样调用执行showMessage方法的?
你记得你是怎么在界面编辑器中创建Hello World按钮和showMessage方法之间的联系的吗?再次打开Main.storyboard,选择"Hello World"按钮.点击多功能区的Connection inspector标志.在发送事件的部分,你应该能够找到一条可用的事件及其对应的方法调用.像你在下图看见的同样,Touch Up Inside事件联系着showMessage()方法.
在iOS,apps是基于事件驱动的编程.不论是系统对象仍是UI对象,都遵从于特定的事件来肯定app的流程.一个UI对象(如按钮),它可能遵从于一个特定的触摸事件.当触发事件时,这个对象唤醒预设的方法来和事件合做.
在Hello World app里,当用户抬起手指放在按钮上的时候,"Touch Up Inside"事件被触发.所以,它唤醒showMessage()方法来演示"Hello World"信息.因为咱们想要避免意外或者错误的触摸,因此用"Touch Up Inside"事件代替"Touch Down".
showMessage方法里面
你如今应该对iOS编程有了更好的理解.可是showMessage方法里的代码块是什么呢?
先说重要的,方法是什么?像以前提到的,一个app里的大部分代码用一些方法处理一些类型的对象.每个对象提供肯定的功能和执行特定的任务(如在屏幕上演示一条信息).这些功能当用代码表达时,咱们称之为方法.如今,让咱们近距离的观看showMessage()方法.
Quick note:我知道理解这些代码对你来讲有点难.若是你是编程纯小白,可能须要一段时间来理解OOP.别放弃,由于若是咱们继续,你将对对象,类和方法得到一个更好的理解.你也能够看看附件来学习更多的Swift知识.或者参照Playgrounds章节里的小练习.
在Swift里,为了在一个类里声明一个方法,咱们用func关键字.func关键字和方法是一个意思.这个名字能够识别方法同时让方法更容易被你代码里其余地方的唤醒.方法能够输入参数.参数用圆括号界定.在咱们的例子里,方法不须要任何参数.在这种状况下,咱们之间简单的写下一对空括号.在方法声明里有一个关键字咱们还没探讨过叫作@IBAction.这个关键字容许你在界面编辑器中联系你的源代码到用户界面对象.当它插入方法声明中的时候,意味着这个方法能够暴露给用户编辑器.这就是为何当你链接Hello World按钮和代码时会有个showMessage事件出如今pop-over里,若是你不知道我在说什么你能够再看一次下面的图
OK,方法的声明说的够多了.咱们来讲说花括号里封闭的代码块.
代码块是实际执行任务的方法.可是,在iOS里开发app的时候,咱们不须要老是从头编写全部的功能.例如,你不须要学习如何在屏幕上画出警告框.你能够利用iOS SDK框架提供的类来担当重任.iOS SDK 带来的各类frameworks和kist会让你更轻松.例如,UIKit框架提供类来构建和管理你app的用户界面.
这里咱们依靠UIAlertController来建立Hello World消息.一个UIAlertController对象显示一个警告信息给用户.第一行代码建立一个UIAlertController对象.从一个类构建一个对象的语法和调用一个方法很像.你指定类名,紧随其后的是一组属性的初始值.这里咱们指定标题,消息和警报的风格:
let alertController = UIAlertController(title: "Hello World", message: "Hello World", prefeStyle: UIAlertControllerStyle.Alert)
建立UIAlertController类(如alertController)以后,咱们调用addAction方法来增长一个动做给警报,它会显示"OK"按钮.在Swift工程里,你能够用.来呼出一个方法.
alertController.addAction(UIAlertAction(title: "ok", style: UIAlertActionStyle.Default, handler: nil))
你可能想知道你怎么才能找到用法和一个类可用的方法.在Xcode里,你能够按住option键,点击类的名字(如UIAlertController).pop-over会出现来显示类的描述.你能够更多的信息经过检查类的参考文献.
UIAlertController对象配置好之后,最后一条代码是在屏幕上显示的警告信息.
self.presentViewController(alertController, animated: true, completion: nil)
在Swift,你能够用self属性来引用当前实例(或对象).
在大多数的状况下,self关键词是可选的.你能够简单的写下面的代码:
presentViewController(alertController, animated: true, completion: nil)
界面和代码的关系
Xcode是怎样知道界面编辑器里的ViewController与ViewController.swift里定义的ViewController类联系起来的呢?
整个事情看起来不重要可是事实上并非如此.你还记得咱们建立Xcode样板工程时选择的模板吗?咱们选的是"Single View Application"模板.当用这个工程模板时,它会在界面编辑器里自动建立一个默认的view controller而后生成ViewController.swift.综上所述,view controller是自动和定义在swift文件里的ViewController类相连的.
咱们来到storyboard,选择View Controller.在多功能区域里,选择Identity inspector图标,你会发现ViewController被设置成标准类.这就是界面编辑器里的对象是怎样与Swift代码类关联的.
屏幕背后的运行按钮
我想跟大家讨论的最后一件事是运行按钮.当你点击运行按钮时,Xcode自动登陆模拟器而后运行你的app.屏幕后面发生了什么?做为一个开发者,你应该看看全部的部分.
整个进程能够被分解成三段:编译,打包和运行.
编译 --你极可能认为iOS理解Swift代码.事实上,iOS仅仅只能阅读机器码.Swift代码是为开发者读写准备的.为了让iOS理解app的源代码,它不得不进行一个翻译进程来把Swift代码翻译成机器代码.这个过程被称为"编译".Xcode已经附带了一个内置编译器来编译源代码
打包 --除了源代码,一个app一般包含源文件好比图像,文本文件,声音文件等等.全部这些资源都被打包在一块儿来生成最终的app.咱们把这两个过程叫作"构建"过程.
运行 --实际上的登陆模拟器和读取你的app.
摘要
你如今应该对Hello World app工做有一个基本的认识.做为一个没有任何编程经验的初学者,要弄清楚咱们以前讨论的全部编程概念并不容易.不要担忧.当你写下更多代码而后在下一章开发一个真正的app滞后,你会对Swift和iOS编程有一个更清晰的认识.