Interface Builder、头文件和实现文件
首先,这些.xib、.h和.m文件是什么?
.xib - 对于.xib后缀的文件,是Interface Builder文件,存放应用程序的用户界面(UI),当你点击.xib 文件时,Xcode 自动切换到Interface Builder 界面,你可以通过拖拉编辑应用程序的用户界面。
.h和.m - .h后缀的文件是头文件, .m 后缀的文件是实现文件。和大多数编程语言一样,Object-C 源代码文件分成2部分:接口文件和实现文件。
返回Object-C 代码,类的接口定义在.h 文件中,使用 @interface 语法定义类的接口。看看HelloWorldViewController.h 文件,这是一个头文件:
@interface HelloWorldViewController:UIViewController
- (IBAction)showMessage;
@end
具体的实现在HelloWorldViewController.m 实现文件中,代码如下:
@implementation HelloWorldViewController
- (IBAction)showMessge
{
.......
}
@end
从上面代码可以看出,使用@implementation 语法定义一个实现。在showMessage方法里面,是实际的代码,用来在屏幕上显示警告消息。你可能没有理解 showMessage 方法的每一行代码。简而言之, 它创建一个UIAlertView 视图,标题位My First App,消息为Hello, World. 接着调用show方法,要求IOS在屏幕上显示弹出消息。
触摸和点击的背后机制
在点击Hello World按钮之后,实际上发生了什么? Hello World按钮如何调用showMessage方法,显示Hello World 消息?
回想起你在InterfaceBuilder界面时,为HelloWorld按钮和sendMessage方法建立了一个连接。再次打开HelloWorldViewController.xib 文件,选择 Hello World 按钮, 然后点击工具区域(Utility Area) 的Send Event按钮,打开Send Events窗口。
Send Events窗口显示了事件和动作方法之间的所有连接。我们可以看到,Touch Up Inside 事件和 showMessage 方法之间建立了连接。 在IOS中,应用程序是事件驱动的。控件或对象(如UIButton) 监听特定事件(如触摸和点击)。当事件出发时,对象会调用和事件关联的预先设置的方法。
在我们的Hello World 应用程序中,当用户提起在按钮上的手指时,将触发Touch Up Inside事件。结果是调用showMessage方法,显示Hello World 消息。
下图总结了整个事件流程:
Run 按钮幕后机制
当你点击Run按钮时,Xcode自动启动模拟器,并运行你的应用程序。但是幕后到底发生了什么呢?
整个过程可分为3个阶段:编译、打包和运行
编译(Compile) - 你可以认为IOS 理解 Objective-C 代码。实际上,IOS仅仅理解机器码。 Object-C 代码是适合开发人员来编写和阅读代码的。为了让IOS理解应用程序的源代码,我们需要通过转换过程将Objective-C代码翻译为机器码。这个过程成为编译。Xcode已经内置了编译器来编译源代码。
打包 (Package) - 除了源代码之外,应用程序通常还包含一些资源文件,如图像文件、文件文件、xib文件等等。所有这些资源文件打包,创建一个最终的应用程序。
我们通常认为这两个过程为构建过程(Build Process)。
运行(Run) - 实际启动模拟器,并装载你的应用程序。