iOS程序执行

任何一个程序, 无论是基于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函数创建了应用程序实例, 应用程序代理实例, 建立事件循环

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值