详解 IOS 7.1 程序启动原理

程序都是从Main方法入口的 IOS 也不例外

int main(int argc,char * argv[])

{

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

    }

}

在IOS 里main 方法里有个UIApplicationMain里面带有4个参数

param 1: argc : 对应argv的参数数量

param 2: argv:    参数变量列表 (加载应用程序对应的-info.plist文件信息

param 3: 指定UIApplication类或子类的名称。如果为nil默认就是UIApplication

param 4: 设置应用程序的代理对象。  如果是nil,则从应用程序的主nib文件加载的代理对象。

返回值: 这个方法一般不会返回,,即使用户点击了IOS的home按钮,程序会把它移动到后台当中。

这个方法会一直循环检测用户请求事件,处理事件


当程序启动完成后会来到AppDelegate,它继承UIResponder并遵循了UIApplicationDelegate

UIResponder定义了响应和处理事件的接口,它是UIApplicationUIWindowUIView的父类能够接收用户的运动事件和触摸事件

// 程序启动完成

(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

// 程序放弃活动

(void)applicationWillResignActive:(UIApplication *)application

// 程序进入后台

 (void)applicationDidEnterBackground:(UIApplication *)application
// 程序进入前台

 (void)applicationWillEnterForeground:(UIApplication *)application

// 程序即将活动

(void)applicationDidBecomeActive:(UIApplication *)application

// 程序即将关闭

 (void)applicationWillTerminate:(UIApplication *)application


如果程序启动后没有storyboard文件 而且也没有在

(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法里设置window对象是不能进行正常活动

通常在此方法里设置

(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];

self.window.backgroundColor = [UIColorwhiteColor];

self.viewController =[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] ;

 // 设置根视图控制器

self.window.rootViewController =self.viewController;

 // 设置主视图并可见  窗口只有一个主视图

 [self.windowmakeKeyAndVisible];

 }

 至此有了window对象后就能够在上面添加各种View进行自定义界面了

 


 

详解 IOS 7.1 程序启动原理,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。