iOS app life cycle 生命周期图
第一步: Main
有C相关语言开发经验的朋友都知道,所有程序运行都是从 main 程序开始的。
#import <UIKit/UIKit.h>#import "NoteNavAppDelegate.h"
int main(int argc, char *argv[]){@autoreleasepool {return UIApplicationMain(argc, argv, nil, NSStringFromClass([NoteNavAppDelegate class]));
}}
第二步:UIApplicationMain
UIApplicationMain 到底为我们做了什么事情?
2.1、创建了UIApplication的实例。
每一个应用程序都有一个UIApplication或其子类型的实例。当程序被加载,函数方法UIApplicationMain就被调用执行,它创建了单件模式的UIApplication对象。
2.2、在 Info.plist 文件中寻找初始化需要的一些元素,这个文档包含了程序需要初始化的一些元素比如:icon、名称、指定主界面的nib文件等等。
其中的 NSMainNibFile => MainWindow 指向主界面。
第三步:主界面
主界面nib页面又给我们指定了什么东西呢?
3.1、File’s Owner 表示当前nib文件的使用者可以看到是UIApplication
3.2、First Responder 可以用于处理很多事件.句柄
3.3、还指定了 application’s delegate
3.4、A window 用于显示程序加载背景. UIWindow class提供了一个container for views的管理和显示。
下面是一个具有导航的Main Nib 文件的引用关系。
第四步:UIApplication加载结束后
接下来处理的关键在于3.3所指定的delegate
当UIApplication加载结束后,会给它所指定的delegate发一个application:didFinishLaunchingWithOptions: 事件消息.
然后在这个方法里面创建自己的view controlle以及给主window指定subview.
接下来的事情就是由程序员自己编程控制了。
从MVC的角度看 iOS 的那些类
iOS的消息流转流程
参考资料:
IPHONE基于窗口应用程序的生死
http://guogoul.com/2010/10/29/iphone-window-based-applicatio/
iOS: some notes
http://blog.csdn.net/totogogo/article/details/7353812