app启动做了哪些事情(ios oc)
2016-04-08 15:57
253 查看
start:
1.加载二进制
2.检查沙箱
3.Objective-C Class Load Initialize
4._attribute_((constructor))函数,C++全局对象构造函数
5.加载必要的资源(info.plist),并显示启动页(加载framework,动态静态链接库,启动图片)
6.main函数初始化UIApplicationMain,开启runloop
UIApplicationMain函数:
1.加载二进制
2.检查沙箱
3.Objective-C Class Load Initialize
4._attribute_((constructor))函数,C++全局对象构造函数
5.加载必要的资源(info.plist),并显示启动页(加载framework,动态静态链接库,启动图片)
6.main函数初始化UIApplicationMain,开启runloop
UIApplicationMain函数:
- 初始化UIApplication单例对象 - 初始化AppDelegate对象,并设为UIApplication对象的代理 - 检查Info.plist设置的xib文件是否有效,如果有则解冻Nib文件并设置outlets,创建显示key window、rootViewController、与rootViewController关联的根view(没有关联则看rootViewController同名的xib),否则launch之后由程序员手动加载。 - 建立一个主事件循环,其中包含UIApplication的Runloop来开始处理事件。
UIApplication:
1、通过window管理视图; 2、发送Runloop封装好的control消息给target; 3、处理URL,应用图标警告,联网状态,状态栏,远程事件等。 AppDelegate: 管理UIApplication生命周期和应用的五种状态(notRunning/inactive/active/background/suspend)。 Key Window: 1、显示view; 2、管理rootViewcontroller生命周期; 3、发送UIApplication传来的事件消息给view。 rootViewController: 1、管理view(view生命周期;view的数据源/代理;view与superView之间事件响应nextResponder的“备胎”); 2、界面跳转与传值; 3、状态栏,屏幕旋转。 view: 1、通过作为CALayer的代理,管理layer的渲染(顺序大概是先更新约束,再layout再display)和动画(默认layer的属性可动画,view默认禁止,在UIView的block分类方法里才打开动画)。layer是RGBA纹理,通过和mask位图(含alpha属性)关联将合成后的layer纹理填充在像素点内,GPU每1/60秒将计算出的纹理display在像素点中。 2、布局子控件(屏幕旋转或者子视图布局变动时,view会重新布局)。 3、事件响应:event和guesture。 插播控制器生命周期 runloop: 1、(要让马儿跑)通过do-while死循环让程序持续运行:接收用户输入,调度处理事件时间。 2、(要让马儿少吃草)通过mach_msg()让runloop没事时进入trap状态,节省CPU资源。
相关文章推荐
- cocos-Lua07帧动画&骨骼动画
- unity3d 状态存储 PlayerPrefs高级用法
- Intellij idea使用postgresql 反向生成实例, 'Basic' attribute type should not be 'Object'
- IOS中TableView的用法
- Android常用知识点汇总(不断更新)
- Android闹钟界面属性小结
- Android中MediaMuxer跟MediaCodec用例
- Android onTouchEvent和onInterceptTouchEvent事件分发详解(一)
- find a list of mapping affect special talbe in informatica
- Unity3D游戏开发之数据持久化PlayerPrefs的使用
- android 常用测试框架
- MTK6515 android 配置GPIO, emmc, LCM, touch panel等
- 50.Android编码规范
- Android user版 设置默认adb 调试 不提示对话框
- Android KeyguardManager相关内容学习
- ios数据存取
- iOS 音乐播放器的实现
- Android加载图片导致内存溢出(Out of Memory异常)
- Android代码资源的国际化
- android wheelview实现三级城市选择