原文:http://course.gdou.com/blog/Blog.pzs/archive/2012/2/5/10929.html
iOS 5 环境下,使用 Storyboard 的应用程序结构如下:
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
程序代理的实现文件中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
// Override point for customization after application launch.
return YES;
}
main.m x 文件:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
- UIApplicationMain 函数调用创建一个 UIApplication 对象及程序代理对象(本例为 AppDelegate)
- UIApplication 对象扫描 Info.plist 文件,将其中 Mainstoryboard file base name 所指定的 Storyboard 文件装入(通常为:MainStoryboard.storyboard)
- UIApplication 对象从程序代理对象中获取窗口对象UIWindow(或创建一个UIWindow 新实例并将其与程序代理对象相关联)
- 将Storyboard 文件中 initial view controller 属性所指定的UIViewController 实例化,并将它赋予为 UIWindow 的root view controller
- 向程序代理对象发送
application:didFinishLaunchingWithOptions:
消息,以便程序员做自己的初始化工作
If you define a main storyboard in your project, iOS automatically does a lot of work for you to set up your app. When your app calls the UIApplicationMain function, iOS performs the following actions:
- It instantiates the app delegate based on the class name you passed into the UIApplicationMain function.
- It creates a new window attached to the main screen.
- If your app delegate implements a window property, iOS sets this property to the new window.
- It loads the main storyboard referenced in the app’s information property list file.
- It instantiates the main storyboard’s initial view controller.
- It sets the window’s rootViewController property to the new view controller.
- It calls the app delegate’s application:didFinishLaunchingWithOptions: method. Your app delegate is expected to configure the initial view controller (and its children, if it is a container view controller).
- It calls the window’s makeKeyAndVisible method to display the window.