IOS程序启动流程

来源:互联网 发布:web前端开发js面试宝典 编辑:程序博客网 时间:2024/06/05 12:05
1、打开程序,调用main函数中调用UIApplicationMain这个函数。
int UIApplicationMain(int argc, char *argv[], NSString*principalClassName, NSString *delegateClassName);
argc、argv:直接将main的参数传递给UIApplicationMain进行相关处理即可。
principalClassName:指定应用程序类名(App的象征),该类必须是UIApplication(或子类)。如果为nil,则UIApplication类作为默认值(一般使用nil)。
delegateClassName:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议,(一般使用NSStringFromClass([??AppDelegate class]))。
如:UIApplicationMain(argc, argv, nil, NSStringFromClass([MYAppDelegate class]))

2、UIApplicationMain函数首先根据principalClassName创建UIApplication(或子类)对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性。接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)程序正常退出时UIApplicationMain函数才返回。
如:
UIApplicationMain
{
principalClassName * obj1;
delegateClassName* obj2;
obj1.delegate  = obj2;
}

0 0