Single View Application应用剖析

希望能仔细点了解xcode里的框架原理,所以回过头来将一些基础类的关系进行下学习。

一般创建的应有两个类:AppDelegate 和 ViewController,以及一个组 Supporting Files。
我们主要的编码工作就是在 AppDelegate 和 ViewController 这两个类中进行的。类图所示:

AppDelegate是应用程序委托对象,它继承了UIResponder类,并实现了UIApplicationDelegate委 托 协 议 。 UIResponder 类 可 以 使 子 类 AppDelegate 具 有 处 理 相 应 事 件 的 能 力 , 而UIApplicationDelegate委托协议使AppDelegate能够成为应用程序委托对象,这种对象能够响应应用程序的生命周期。相应地,AppDelegate的子类也可以实现这两个功能。ViewController类继承自UIViewController类,它是视图控制器类,在工程中扮演着根视图、用户事件控制类的角色。需要特别指出的是,ViewController.xib文件也是视图控制文件,起描述作用,与ViewController配套存在。AppDelegate和ViewController类与main代码模块的主函数存在一种直接的调用关系,下面我
们借助UML时序图来进行详细说明。启动时序图:


在HelloWorld启动过程中,首先调用main.m代码模块的main主函数进行
AppDelegate的实例化,具体代码如下所示:
intmain(int argc,char*argv[])
{
@autoreleasepool{
returnUIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegateclass]));
}
}
AppDelegate类是应用程序委托对象,这个类中继承的一系列方法在应用生命周期的不同阶
段会被回调。启动HelloWorld时,首先会调用application: didFinishLaunchingWithOptions:方法,
该方法的代码如下:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window =[[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]autorelease];
self.viewController =[[[ViewController alloc]initWithNibName:@"ViewController" bundle:nil] autorelease];
self.window.rootViewController =self.viewController;
[self.window makeKeyAndVisible];
returnYES;
}
在该方法中共做了3件事:实例化UIWindow,实例化ViewController,然后把ViewController
作为根视图控制器放到UIWindow上。每一个iOS应用都有一个UIWindow对象,而每一个
UIWindow对象上面都一个根视图,它所对应的控制器为根视图控制器(ViewController),
UIWindow对象与根视图直接的关系如图2-11所示。在根视图上可以添加子视图。各种控件(包
括UIWindow)都继承了UIView。

你可能感兴趣的:(Single View Application应用剖析)