每一个应用程序的入口不容置疑都是Main函数,每一个Main函数都会调用UIApplicationMain函数,UIApplicationMain函数到底做了什么,几个参数代表什么意思
先来看看UIApplicationMain函数的原型
按住Option键,点击这个方法
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]))
进入官方帮助文档,查看函数原型
int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);
argv(argument vector) 程序的 运行参数的字符串数组
argc和argv是ANSI C标准的Main函数参数
principalClassName 指定应用程序类名,该类必须是UIApplication类或UIApplication子类
delegateClassName 指定应用程序的代理类
此函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建delegate对象,并将UIApplication对象中delegate属性设置为delegate对象,接着建立应用程序的main runloop进行事件的处理。
如果Info.plist文件的key值存在Main storyboard file base name,就会在storyboard文件对象里找到UIApplication对象,并且连接它的delegate,如果Info.plist文件的key值不存在Main storyboard file base name,就会调用delegate对象的didFinishLaunchingWithOptions:方法
程序正常退出时,UIApplicationMain函数才返回
什么是UIApplication类
UIApplication对象是应用程序的象征,所以每一个应用程序都有自己的UIApplication对象,而且是单例的,利用UIApplication对象可以做一些应用级别的操作,UIApplication对象也是应用程序创建的第一个对象。