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函数创建了应用程序实例, 应用程序代理实例, 建立事件循环
- iOS程序执行过程
- iOS程序执行
- IOS 程序执行
- ios 程序启动执行顺序
- iOS程序的执行顺序
- ios程序的执行顺序
- IOS 如何退出后台执行程序
- UIViewController的iOS程序执行顺序
- UIViewController的iOS程序执行顺序
- iOS程序执行流程(swift)
- GCD IOS程序等一会在执行,延时执行
- 【iOS开发】 UIViewController的生命周期及iOS程序执行顺序
- [IOS]UIViewController的生命周期及iOS程序执行顺序
- iOS学习笔记(二.iOS程序执行流程)
- iOS UIViewController的生命周期及iOS程序执行顺序
- UIViewController的生命周期及iOS程序执行顺序
- UIViewController的生命周期及iOS程序执行顺序
- UIViewController的生命周期及iOS程序执行顺序
- C++Primer第五版 9.5.1节练习
- 利用matlab获取算法源代码
- Fuel 7.0介绍
- AUB集合的并集
- APNS推送原理
- iOS程序执行
- [Linux]不同方法运行shell脚本的区别
- java类加载器
- Eclipse将第三方框架导入
- Https(SSL/TLS)原理详解
- Lua基础
- error: expected unqualified-id before numeric constant
- uva 11324 The Largest Clique(强连通分量 + DAG)
- php统计数组中各项的个数用函数array_count_values