【iOS】UIViewController生命周期

UIViewController有2周期:

在UIViewController中,View存在两个循环:载入循环卸载循环

载入循环

1》程序请求controller的view。

2》假设view在内存中,则直接载入。相反,假设不存在。则UIViewController调用loadView方法。

3》loadView方法运行例如以下操作:

假设你重载了这种方法,则必须创建必要的view而且将一个非nil值传给UIViewController的view属性。

假设你没有重载这个函数,UIViewController会默认使用UIViewController的nibName和nibBundle属性尝试从nib文件载入view。假设没有找到nib文件,它尝试寻找一个与UIViewController类名匹配的nib文件。

假设没有可用的nib文件,那么它创建一个空的UIView作为它的view。

4》UIViewController调用viewDidLoad来运行一些载入时任务。

卸载循环

1》程序收到内存警告。

2》每一个UIViewController调用didReceiveMemoryWarning。默认会安全地释放掉view。

3》假设UIViewController释放掉了它的view,它会调用viewDidUnload。能够重载这种方法来进行额外的清理工作

UIViewController的生命周期

当一个视图控制器被创建。并在屏幕上显示的时候。 代码的运行顺序

1、 alloc                                   创建对象,分配空间

2、init (initWithNibName) 初始化对象,初始化数据

3、loadView                          从nib加载视图 ,通常这一步不须要去干涉。除非你没有使用xib文件创建视图

4、viewDidLoad                   加载完毕,能够进行自己定义数据以及动态创建其它控件

5、viewWillAppear              视图将出如今屏幕之前,立即这个视图就会被展如今屏幕上了

6、viewDidAppear               视图已在屏幕上渲染完毕

当一个视图被移除屏幕而且销毁的时候的运行顺序,这个顺序差点儿相同和上面的相反。

1、viewWillDisappear            视图将被从屏幕上移除之前运行

2、viewDidDisappear             视图已经被从屏幕上移除,用户看不到这个视图了

3、dealloc                                 视图被销毁,此处须要对你在init和viewDidLoad中创建的对象进行释放

关于viewDidUnload :在发生内存警告的时候假设本视图不是当前屏幕上正在显示的视图的话。 viewDidUnload将会被运行,本视图的全部子视图将被销毁,以释放内存,此时开发人员须要手动对viewLoad、viewDidLoad中创建的对象释放内存。 由于当这个视图再次显示在屏幕上的时候,viewLoad、viewDidLoad 再次被调用,以便再次构造视图。

參考:http://blog.csdn.net/huifeidexin_1/article/details/7566226

http://blog.csdn.net/teamlet/article/details/8579129

xn4545945收集整理:http://blog.csdn.net/xn4545945

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-08-06 11:57:06

【iOS】UIViewController生命周期的相关文章

iOS对UIViewController生命周期和属性方法的解析

目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实例的传值陷阱 四.UIViewController与StroyBoard的相关相互方法 1.ViewController直接在StoryBoard中进行跳转的传值 2.使用代码跳转Storyboard中的controller 五.UIViewController之间的一些从属关系 1.parentV

【iOS开发】iOS对UIViewController生命周期和属性方法的解析

iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有条有理的展示在我们的View层上.iOS中的UIViewController是UIKit框架中最基本的一个类.从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础.基于UIViewController的封装和扩展,也能够出色的完成各种复杂界面逻辑.这篇博客,旨在讨论UIV

initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏

当我们创建或者自定义一个UI控件时,就很可能会调用awakeFromNib.initWithCoder .initWithFrame这些方法.三者的具体区别如下: initWithFrame: 通过代码创建UI控件的时候就会调用: initWithCoder:从文件中解析一个对象的时候就会调用这个方法,也就是说无论是通过代码还是xib,程序运行的时候都会调用这个方法: awakeFromNib:当一个对象从xib或者storyboard中加载完毕后,就会调用一次. 比如:当苹果官方提供的按钮不能

IOS ViewController生命周期

ViewController ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他ViewController的通信和协调. 在IOS中,有两类ViewController,一类是显示内容的,比如UIViewController.UITableViewController等,同时还可以自定义继承自UIViewController的Vi

IOS的生命周期问题

开发Android必须得清楚Android生命周期才能很好的掌控程序的框架,让整个项目思路更加清晰流畅,因此IOS也是必须要了解IOS的生命周期 先从一个简单的实例来看看 AppDelegate.m文件里面的内容如下: // // AppDelegate.m // SwitchView // // Created by Pishum on 15/5/5. // Copyright (c) 2015年 Pishum. All rights reserved. // #import "AppDele

UIViewController生命周期控制

UIViewController生命周期控制 UIViewController介绍 官方的介绍例如以下 The UIViewController class provides the fundamental view-management model for all iOS apps. You rarely instantiate UIViewController objects directly. Instead, you instantiate subclasses of the UIVie

IOS Application生命周期

应用程序的状态 Not running(未运行):程序没启动 Inactive(未激活):程序在前台运行,不过没有接收到事件.在没有事件处理情况下程序通常停留在这个状态 Active(激活):程序在前台运行而且接收到了事件.这也是前台的一个正常的模式 Backgroud(后台):序在后台而且能执行代码,大多数程序进入这个后台后会在在这个状态上停留一会.时间到之后会进入挂起状态(Suspended).有的程序经过特殊的请求后可以长期处于Backgroud状态 Suspended(挂起):程序在后台

图解ios程序生命周期

图解ios程序生命周期 应用程序启动后状态有Active.Inactive.Background.Suspended.Not running这5种状态,几种状态的转换见下图: 在AppDelegate中实现app状态变化时的回调函数,在 app状态发生变化时,系统会执行相应回调: - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions

你真的了解UIViewController生命周期吗?

一:首先了解一下生命周期图 二:UIViewController 生命周期介绍 1.通过alloc init 分配内存,初始化controller. 2.loadView loadView方法默认实现[super loadView] 如果在初始化controller时指定了xib文件名,就会根据传入的xib文件名加载对应的xib文件,如果没传xib文件名,默认会加载跟controller同名的xib文件,如果没找到相关联的xib文件,就会创建一个空白的UIView,然后赋給controller的