iOS程序启动与运转
2016-05-18 11:43
531 查看
--零--从程序启动开始到view显示:
start->(加载framework,动态静态链接库,启动图片,Info.plist等)->main函数->UIApplicationMain函数:
1.加载二进制
2.检查沙箱
3.Objective-C Class Load Initialize
-4._attribute_((constructor))函数,C++全局对象构造函数
5.加载必要的资源(info.plist),并显示启动页
6.main函数初始化UIApplicationMain,开启runloop
1、通过window管理视图;
2、发送Runloop封装好的control消息给target;
3、处理URL,应用图标警告,联网状态,状态栏,远程事件等。
管理UIApplication生命周期和应用的五种状态(notRunning/inactive/active/background/suspend)。
1、显示view;
2、管理rootViewcontroller生命周期;
3、发送UIApplication传来的事件消息给view。
1、管理view(view生命周期;view的数据源/代理;view与superView之间事件响应nextResponder的“备胎”);
2、界面跳转与传值;
3、状态栏,屏幕旋转。
1、通过作为CALayer的代理,管理layer的渲染(顺序大概是先更新约束,再layout再display)和动画(默认layer的属性可动画,view默认禁止,在UIView的block分类方法里才打开动画)。layer是RGBA纹理,通过和mask位图(含alpha属性)关联将合成后的layer纹理填充在像素点内,GPU每1/60秒将计算出的纹理display在像素点中。
2、布局子控件(屏幕旋转或者子视图布局变动时,view会重新布局)。
3、事件响应:event和guesture。
插播控制器生命周期
1、(要让马儿跑)通过do-while死循环让程序持续运行:接收用户输入,调度处理事件时间。
2、(要让马儿少吃草)通过mach_msg()让runloop没事时进入trap状态,节省CPU资源。
start->(加载framework,动态静态链接库,启动图片,Info.plist等)->main函数->UIApplicationMain函数:
1.加载二进制
2.检查沙箱
3.Objective-C Class Load Initialize
-4._attribute_((constructor))函数,C++全局对象构造函数
5.加载必要的资源(info.plist),并显示启动页
6.main函数初始化UIApplicationMain,开启runloop
- 初始化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资源。
相关文章推荐
- iOS开发之画图板(贝塞尔曲线)
- IOS开发之自定义Button(集成三种回调模式)
- block使用时的一些情况以及防止循环引用
- IOS开发之显示微博表情
- iOS开发之新浪微博山寨版代码优化
- IOS开发之新浪围脖
- IOS开发之记录用户登陆状态
- iOS 疑难杂症— — 收到推送显示后自动消失的问题
- IOS开发之TabBarItem&NavigationBarItem
- IOS开发之获取Storyboard创建的ViewController
- IOS 多线程编程指南_GCD
- IOS开发之简单音频播放器
- IOS开发之绝对布局和相对布局(屏幕适配)
- iOS开发之抽屉效果实现
- iOS开发之版本控制(SVN)
- iOS开发之使用XMPPFramework实现即时通信(三)
- CocoaPods报错:The dependency `AFNetworking (~> 3.0.4s)` is not used in any concrete target
- 在iOS上实现一个简单的日历控件
- 使用Xcode和Instruments调试解决iOS内存泄露
- iOS开发获取通讯录用户名和手机号