1 / 30
文档名称:

iOS程序启动原理.ppt

格式:ppt   大小:456KB   页数:30页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

iOS程序启动原理.ppt

上传人:分享精品 2017/9/6 文件大小:456 KB

下载得到文件列表

iOS程序启动原理.ppt

相关文档

文档介绍

文档介绍:iOS程序启动原理
技术博客http://blog./Chen_Yilong  
新浪微博/luohanchenyilong
iOS应用程序运行流程
打开程序
执行main函数
执行UIApplicationMain函数
初始化UIApplication(并设置代理对象,开启事件循环)
结束程序
监听系统事件
application:
didFinishLaunchingWithOptions:
eActive:
applicationDidEnterBackground:
applicationWillResignActive:
applicationWillEnter
Foreground:
applicationDidReceiveMemory
Warning:
applicationWillTerminate:
UIApplication代理
程序加载完毕
程序获取焦点
程序进入后台
程序失去焦点
程序从后台回到前台
内存警告,可能要终止程序
程序即将退出
UIWidnow
状态栏
UIView
UIApplication
delegate
UIWidnow
rootViewController
MJViewController
view
UIView
MJAppDelegate
window
main
UIApplicationMain
superview
UIApplicationMain
,这是ios程序的入口点
int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName)
argc、argv:ISO C标准main函数的参数,直接传递给UIApplicationMain进行相关处理即可
principalClassName:指定应用程序类,该类必须是UIApplication(或子类)。如果为nil,则用UIApplication类作为默认值
delegateClassName:指定应用程序类的代理类,该类必须遵守UIApplicationDelegate协议
UIApplicationMain
此函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性
UIApplication对象会依次给delegate对象发送不同的消息,接着会建立应用程序的main runloop(事件循环),进行事件的处理(首先会调用delegate对象的 application:didFinishLaunchingWithOptions:)
程序正常退出时这个函数才返回。如果进程要被系统强制杀死,一般这个函数还没来得及返回进程就终止了
四大对象关系图
*.xib
UIApplicationDelegate
.window
UIApplication
.delegate
UIWindow
.rootViewController
UIViewController
.view
iOS中的mvc
UIApplication
UIApplication是应用程序的核心,每一个程序在运行期必须有UIApplication(或子类)的一个实例(有且仅有一个),通过[UIApplication sharedApplication]可以得到这个单例实例的指针
UIApplication帮助管理应用程序的生命周期,而它通过delegate来履行这个任务
UIApplication可以接收事件,把所有用户事件都放入队列,逐个处理,它会发送当前事件给一个合适的目标控件进行处理。它还将部分事件转给delegate对象来处理,delegate可处理的事件包括:应用程序的生命周期事件(如程序启动和关闭)、系统事件(如来电)
UIApplication
[UIApplication sharedApplication].windows: 在本应用中打开的UIWindow列表,这样就可以接触应用中的任何一个UIView对象
[UIApplication sharedApplication].keyWindow: 用来接收键盘以及非触摸类的消息事件的UIWindow,而且程序中每个时刻只能有一个UIWindow是keyWindow。如果某个UIWindow内