第三章 Hello World App 浅述(一)

来源:互联网 发布:四大公司人工智能 编辑:程序博客网 时间:2024/06/05 07:45

Hello World App是如何工作的



创建一个app是不是很简单?我想你阅读第一章时一定很开心,并且已经创建了你的第一个iPhone app。

在我们继续介绍iOS SDK之前,我们稍微停一下,并且深入观察一下Hello World app。这对你理解Swift语言基础和app内部的工作原理有好处。

迄今为止你一步一步创建了Hello World app。随着你阅读上一章,你心里可能会想:

1、storyboard中的View Controller是如何和ViewController.swift中的ViewController类建立联系的?

2、showmessage()方法中的代码块的含义是?它们是如何通知iOS显示一条Hello World消息的

3、关键字@IBAction的含义是什么

4、“Hello World”按钮后面隐藏些什么?按钮时如何检测到按下并且触发showmessage()方法的?

5、Run按钮时如何工作的?编译一个app是什么意思?

我希望你们专注于探索Xcode的开发环境,所以现在我不打算解释上面任何一个问题。但是对于每个开发人员来说理解代码背后的细节和掌握iOS编程的基本概念都是最基本的要求。技术的概念可能有一点难以理解,特别是,当你没有任何编程经验的时候。不要担心,因为现在才刚刚开始。随着你不断的学习和编写更多的代码,你将会更深入的理解iOS编程。请尽你的最大努力去学习。

让我们看一个真实生活中的例子

例如一个电视遥控器。使用遥控器无线控制电视的声音非常的方便。要切换频道,你按一下频道数字就可以了。要提高音量,你按音量+按钮就可以。

那我现在就问了。你知道当你按下音量或者频道按钮之后发生了什么吗?很可能不知道吧。我相信绝大多数人都不懂电视远端无线通信。你可以认为,遥控器发出了一条确切的消息给电视,并且触发了声音变大或者频道切换。

在这个例子汇总,和你交换的按钮相当于用户界面,在按钮后面的细节相当于具体措施。界面通过消息和具体措施之间通信。



这个概念在iOS编程领域是普遍使用的。在storyboard中的界面就是用户界面,程序代码就是具体措施。界面元素(如按钮)经由消息和代码之间通信。

特别的,我们回来看Hello World工程,我们添加的按钮就是界面。在ViewController类中的showMessage()方法就是具体措施。当有人点击按钮时,按钮发出一条“显示消息”的消息给ViewController激活showMessage()方法调用。

我们现在展示的就是面向对象编程中非常重要的一个概念封装。showMessage()的具体实现相对外部世界(界面)是隐藏的。Hello world按钮并不知道showMessage()方法是如何工作的。它仅仅知道需要发送一条消息。ShowMessage()方法处理如何在屏幕中显示“Hello World”消息。

在点击背后

现在你知道UI中的按钮和代码通过消息通信。让我们仔细看一下当用户点击“Hello World”按钮后真正发生了什么。“Hello World”按钮是如何调用showMessage()方法的?

你还记得你在Interface Builder中是如何建立“Hello World”按钮和showMessage事件之间联系的吗?再次打开Main.storyboard选择“Hello World”按钮。点击工具区域的连接观察器。在发送事件段(Sent Event),你会看见一系列可用的事件和相应的方法调用。正如你在下面的图中看到的,“Touch Up Inside”事件和showMessage()方法连接在一起。





在iOS中,app是基于事件驱动编程。无论是系统对象还是UI对象,都监听特定的事件决定app下面的行为。对于UI对象(例如按钮),可能监听专门的点击事件。当事件发生,对象调用这个事件预设的方法。

在Hello World app中,当用户抬起在按钮中间的手指时,“Touch Up Inside”事件被触发。然后按钮调用showMessage()方法显示“Hello World”消息。我们使用“Touch Up Inside”事件替代“Touch Down”事件因为要避免意外或者虚假按击。图2-3 总结了我们描述的事件流程。

showMessage方法内部

现在你对iOS编程理解是不是更深了一点。但是showMessage()方法里面的代码是什么意思呢?

首先,什么是方法?像我们之前提到的,在app中大多数代码都是以某种方法处理某种对象。每一个对象提供特定的功能和执行特定的行为(例如:在屏幕上显示一条消息)。这些功能通过代码表达就是方法。

现在,让我们仔细看一下showMessage()方法。



在Swift中我们使用func关键字在类里声明方法。在func关键字后面的是方法名。方法名标识了方法,并且方便我们在程序的其他地方调用。方法可以有输入参数。参数定义在一对圆括号之间。在我们的例子里,这个方法不需要任何参数。在这种情况下,我们简单的写一对空的圆括号。

方法里面还有一个关键字我们没有谈到。就是@IBAction。这个关键字允许你将你的代码和Interface Bulilder中的用户界面之间建立关联。当它在方法声明中出现时,暗示Interface Builder可以看到这个方法。这就是为什么可以在第一章中建立Hello World按钮和代码之间联系时的弹出窗口中看到showMessage的原因。

好了,方法声明介绍完了。让我们讨论一下大括号之间的代码块。

大括号中中的代码实现了方法需要实现的行为。可喜的是,在iOS开发过程中我们不需要编写所有的代码。例如你不需要知道如何在屏幕中绘制警告框。你可以用iOS SDK框架中提供的工具类来完成这些活。iOS SDK包含了许多框架和开发套件,让你的开发更加简单。例如,UIKit框架提供了构件和管理app用户界面的类。

这里我们依靠UIAlertController创建了Hello World 消息。UIAlertController对象为用户显示一条警告信息。代码的第一行创建一个UIAlertController对象。依据一个类创建一个对象和调用方法非常类似。你只需指明类名,并且提供一系列属性初始值。这里我们说明了警告框的title,message和style


在创建UIAlertController对象之后,我们调用addAction方法在警告框中增加了一个“OK”按钮。在Swift中,你可以通过点.语法调用方法。


你可能会想,如何才能知道类中有哪些方法并且如何使用?在Xcode中,你可以按下Option键,移动鼠标到类名处(例如UIAlertController)并且点击。将会出现一个关于类描述的弹出窗口。如果你想获得更多信息你可以点击蓝色的链接。



当UIAlertController对象的所有参数设置完毕,最后一行代码是在屏幕上显示这条警告信息。


在Swift中,使用self属性引用当前实例或者对象。为了显示警告框,我们通过View controller用弹出卡片形式展示alertController。