UIApplicationMain(都做了什么)
2015-03-28 20:52
197 查看
转自:http://blog.sina.com.cn/s/blog_48fb2901010135p1.html
在iOS应用中,每个程序得main函数中都调用了UIApplicationMain函数。
先来看看UIApplicationMain函数的原型:
前面的argc和argv是ISO C标准的main函数的参数,直接传递给UIApplicationMain进行相关处理。
principalClassName是应用程序类的名字,该类必须继承自UIApplication类。
而delegateClassName是应用程序类的代理类。如果主要nib文件(在info.plist文件中指定,key是NSMainNibFile)存在,就会在nib文件对象里寻找Application对象和连接它的delegate。此函数会根据principalClassName创建UIApplication对象,然后根据delegateClassName创建一个delegate对象,并将UIApplication对象中的delegate属性设置为delegate对象。
接着会建立应用的main runloop,进行事件的处理(首先会调用–application:didFinishLaunchingWithOptions:)。程序正常退出时才返回(如今iOS支持后台运行,系统在必要时会强行杀死不用的进程,一般这个函数不等返回进程就终止了)。
在iOS应用中,每个程序得main函数中都调用了UIApplicationMain函数。
int main( int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain (argc, argv, nil , NSStringFromClass ([AppDelegate class ])); } } |
int UIApplicationMain ( int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName ); |
principalClassName是应用程序类的名字,该类必须继承自UIApplication类。
而delegateClassName是应用程序类的代理类。如果主要nib文件(在info.plist文件中指定,key是NSMainNibFile)存在,就会在nib文件对象里寻找Application对象和连接它的delegate。此函数会根据principalClassName创建UIApplication对象,然后根据delegateClassName创建一个delegate对象,并将UIApplication对象中的delegate属性设置为delegate对象。
接着会建立应用的main runloop,进行事件的处理(首先会调用–application:didFinishLaunchingWithOptions:)。程序正常退出时才返回(如今iOS支持后台运行,系统在必要时会强行杀死不用的进程,一般这个函数不等返回进程就终止了)。
相关文章推荐
- iOS 【程序启动原理/手动创建UIWindow/UIApplicationMain做了些什么/makeKeyAndVisible底层实现】
- Xcode6.2 调试时,Crash到main函数的入口(UIAPPlicationMain)
- iOS UIApplicationMain
- UI基础:UI程序执行顺序(UIApplicationMain()函数),自定义视图 分类: iOS学习-UI 2015-07-02 22:09 68人阅读 评论(0) 收藏
- UIAPPlicationMain() 函数详解 (一个应用程序的启动过程)
- UIApplicationMain详解
- UI基础:UI程序执行顺序(UIApplicationMain()函数),自定义视图
- Error: You are creating QApplication before calling UIApplicationMain
- UIApplication 是什么
- iOS-UIApplicationMain以及UIApplication职责
- IOS 中 main()函数中UIApplicationMain后面的代码不执行...
- Coordinating Efforts Between View Controllers--UIApplicationMain 初始化的步骤
- UIApplicationMain
- IPHONE - GSRegisterPurpleNamedPort SIGABRT in UIApplicationMain Before App Delegate Gets to Run Any Code
- UIApplicationMain启动的参数说明
- ios程序入口main及UIApplicationMain的研究
- 程序入口-UIApplicationMain
- UIApplicationMain详解
- UIApplicationMain
- UIApplicationMain笔记