app启动过程和UIViewController的生命周期

程序启动分为两类:1.有storyboard 2.没有storyboard

有storyboard情况下:

1.main函数

2.UIApplicationMain

* 创建UIApplication对象

* 创建UIApplication的delegate对象

3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)

* 创建UIWindow

* 创建和设置UIWindow的rootViewController

* 显示窗口


没有storyboard情况下:

1.main函数

2.UIApplicationMain

* 创建UIApplication对象

* 创建UIApplication的delegate对象

3.delegate对象开始处理(监听)系统事件(没有storyboard)

* 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法

* 在application:didFinishLaunchingWithOptions:中创建UIWindow

* 创建和设置UIWindow的rootViewController

* 显示窗口



问题:A页面push到B页面.  A页面先调用disappear还是B页面先调用willappear?

调用顺序:1.A页面调用willDisappear 2. B页面调用willAppear 3. A页面调用Diddisappear4. B页面调用Diaappear





UIWindowLevel

UIWindow iOS系统为了保证UIAlertView在所有的界面之上,它会临时创建一个新的UIWindow,通过将其UIWindow的UIWindowLevel设置更高,让UIAlertView改在所有的应用界面之上。系统定义的UIWindowLevel一共有三个取值:UIWindowLevelNormal>UIWindowLevelStatusBar>UIWindowLevelAlert


didReceiveMemoryWarning

iOS 6以后,苹果会自动处理内存警告(以前是在viewDidUnlod)

UIView有一个CALayer的成员变量,CALayer是具体用于将自己画在屏幕上的,CALayer是一个bitmap图像的容器,当UIView调用自身的drawRect时,CALayer才会创建这个bitmap图像类。其中bitmap类是占用内存最大的,在iOS6中,当系统发出MemoryWarning的时候,系统会自动回收bitmap类,但是不回收UIView和CALayer类。

具体的是:bitmap内容的私有成员变量类型为CABackingStore

当收到内存警告的时候,CABackgourndStore类型的内存去就会被标记为volatile类型,表示这块内存可能在此被原变量使用,所有只要这块内存没有被复用,当需要重建bitmap是,它就可以直接被复用,从而避免了UIVIew在此调用DrawRect


----唐巧《iOS进阶开发》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,929评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,871评论 1 32
  • OC语言基础 1.类与对象 类方法 OC的类方法只有2种:静态方法和实例方法两种 在OC中,只要方法声明在@int...
    奇异果好补阅读 9,807评论 0 11
  • 重点参考链接: View Programming Guide for iOS https://developer....
    Kevin_Junbaozi阅读 10,026评论 0 15
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 4,410评论 0 1

友情链接更多精彩内容