iOS程序执行

来源:互联网 发布:乐视视频网络不可用 编辑:程序博客网 时间:2024/05/22 03:41

任何一个程序, 无论是基于MOC OS还是iOS, 程序都是从mai.m文件的main函数开始执行的

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

{

@autoreleasepool{

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

  }

}

执行UIApplicationMain函数时做了跳转, 转到了AppDelete中

UIApplicationMain在程序入口函数main函数中调用, 主要实现了3个功能:

1.创建应用程序(UIApplication)实例

2.创建应用程序代理实例

3.建立事件循环 (runloop:死循环, 不断监测程序运行状态, 是否被触摸, 晃动等)

 

UIApplicationMain剖析

intUIApplicationMain(

int argc,

char *argv[],

NSString*principalClassName,

NSString*delegateClassName);

1.principalClassName:应用程序对象的类名 (UIApplication或其子类)

2.delegateClassNanme:应用程序delegate类名. (何接受了UIApplicationDelegate的类)

UIApplicationMain根据上述两个类名创建应用程序实例, 应用程序代理实例. 然后建立事件循环(runloop), 监测程序的各种事件 (程序开始启动, 接受到触摸等等)

应用程序代理, 主要监测应用程序的抓过太并做出响应的处理.

应用程序的状态有很多, 比如(程序启动, 进入或缺状态, 进入到后台, 内存警告, 收到远程消息等等

任何接受了UIApplicationDelegate歇息的对象都可以成为应用程序代理

一旦应用程序的某种状态触发, 就会执行相应地代理方法.

法都与应⽤用程序运⾏行状态有关,它们由应⽤用程序代理实现。UIApplication

对象负责调⽤用。

 

⽅方法名  描述

application:didFinishLaunchingWithOptions:

告诉delegate程序启动即将完成,程序准备要运⾏行。

(delegate实现这个⽅方法时,要创建window对象,将程序内容通过window呈现给⽤用户。)

applicationDidBecomeActive:告诉delegate应⽤用程序已经进⼊入活跃状态(重新执⾏行被暂停的任务)

applicationWillResignActive:

告诉delegate应⽤用程序即将进⼊入⾮非活跃状态(暂停游戏、停⽌止timer等)

applicationDidEnterBackground:

告诉delegate应⽤用程序已经进⼊入到了后台(存储⽤用户数据、释放⼀一些共享资源、停⽌止timer等)

applicationWillEnterForeground:告诉delegate应⽤用程序即将进⼊入前台(取消所有进⼊入后台时暂停的任务)

 

delegate是iOS重要的设计模式, 理解它的原理, 有助于写出优质的代码

main函数时程序的入口. UIApplicationMain函数创建了应用程序实例, 应用程序代理实例, 建立事件循环

 

0 0
原创粉丝点击