一 viewcontroller执行方法的主要顺序为:

init—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—>viewWillDisapper—>viewDidDisapper—>viewDidUnload—>dealloc

二  关于init方法,一般是- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

如果为viewcontroller创建了配套的xib文件,那么直接调用init方法会自动去寻找对应的xib文件并正确载入;

例如:如果viewcontroller类为MyList,对应的xib文件也是MyList.xib; 那么

UIViewController* vc = [[MyList alloc] init]; 的实际效果和

UIViewController* vc = [[MyList alloc] initWithNibName:@"MyList" bundle:nil]; 是一样的;

但如果文件不是对应的,那么一定要显式指定xib文件名;建议如果是用xib的话,都显示指定文件名。

三 关于loadView.

按照SDK文档的说法,不要自己显示调用这个方法。这个方法会在需要用到view属性但是view属性为nil的时候自动调用的. 如果viewcontroller与nib关联(无论是用xib文件还是storyboard文件等等),那么会从对应的nib中load view并且赋给view属性. 也就是如果是用Interface Builder来写的界面,那么不要重写loadView方法。如果是代码写的界面而且需要提供不一样的view层次的话,子类也可以自己重写这个方法. 大部分情况下其实不需要实现这个方法了.

四 在iOS 6之前,对于不在最上层显示的view controller, 在收到内存警告的时候,系统会将view释放,并调用viewWillUnload和viewDidUnload. 此时重新进入界面的时候viewDidLoad会再次被调用. 所以这时如果还是用MRC的话,注意viewDidLoad中不要因为重入而多次alloc一些对象.

而在iOS 6之后,在收到内存警告的时候,系统会自动回收一些与渲染相关的内存,实际与view相关的内存绝大多数情况下都不需要被回收了。尽管这个时候也可以手动的self.view = nil;来释放内存,但是苹果其实不推荐这么做的,这个时候回到的内存少得可怜,反而增加了处理的复杂度。这个时候其实只需要根据实际需求来释放一些持有的占用大量内存的成员变量.

四 假如在view controller A上present 了一次view controller B, 那么当B被dismiss的时候,A的viewWillApper与viewDidApper是不会被调用的.

在这个方法的注释中有如下这么一段:

Note

If a view controller is presented by a view controller inside of a popover, this method is not invoked on the presenting view controller after the presented controller is dismissed.

viewcontroller生命周期知识要点的更多相关文章

  1. iOS ViewController生命周期

    ViewController是view的controller,viewController的职责主要包括管理内部各个view的加载显示与卸载,同时负责与其他ViewController的通信和协调. ...

  2. iOS学习笔记—ViewController/生命周期

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图.iOS的SDK中提供很多原生ViewController ...

  3. 【Xamarin 开发 IOS --IOS ViewController生命周期】

    ViewController ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内 ...

  4. IOS学习笔记37——ViewController生命周期详解

    在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它.ViewContro ...

  5. maven生命周期绑定要点

    生命周期不执行任何操作,都是抱插件大腿 maven-core-3.3.9-sources.jar下META-INF/plexus/components.xml的定义了三个生命周期的插件绑定 参考:ht ...

  6. ViewController生命周期

    alloc -> initWithNibName -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppea ...

  7. IOS ViewController 生命周期

    加载过程 第一步 -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 第二步 -(void) ...

  8. iOS - ViewController的生命周期

    iOS SDK中提供很多原生的ViewController,大大提高了我们的开发效率:那么下面我们就根据开发中我们常用的ViewController谈一谈它的生命周期: (一)按照结构和用法可以对iO ...

  9. ViewController的生命周期分析和使用

    iOS的SDK中提供很多原生ViewController,大大提高了我们的开发效率,下面是我的一些经验. 一.结构 按结构可以对iOS的所有ViewController分成两类:1.主要用于展示内容的 ...

随机推荐

  1. 菜鸟的《Linux程序设计》学习——MySQL数据库安装、配置及基本操作

    1. MySQL数据库: 在涉及到一些大型的Web系统或者嵌入式软件的开发时,都少不了用数据库来管理数据.在Windows操作系统下,使用过各种各样的数据库,如:sqlServer.Oracle.My ...

  2. 常见slave 延迟原因以及解决方法

    一  序言在运维线上M-M 架构的MySQL数据库时,接收的比较多关于主备延时的报警: 点击(此处)折叠或打开 check_ins_slave_lag (err_cnt:1)critical-slav ...

  3. Git常用的基本操作

    一.如何学习git指令 1.查看帮助:git help2.查看指定命令:git help clone3.搜索关键字:/chone 4.退出帮助文档:输入Q 二.常见命令 1.初始化git本地仓库:先进 ...

  4. django的rest framework框架——分页、视图、路由、渲染器

    一.rest framework的分页 1.使用rest framework内置类PageNumberPagination实现分类 from django.conf.urls import url f ...

  5. TMG 模拟公司网络架构要点

    1.部署的router 有且只有一个网关,指向TMG服务器 2.router 确认有默认路由,指向TMG服务器 3.TMG 只能设置一个网关,指向模拟公网关 4.TMG 要手工创建指向router的路 ...

  6. 【LeetCode】Two Sum(两数之和)

    这道题是LeetCode里的第1道题. 题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会 ...

  7. NYOJ 469 擅长排列的小明 II

    擅长排列的小明 II 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 小明十分聪明,而且十分擅长排列计算. 有一天小明心血来潮想考考你,他给了你一个正整数n,序列1, ...

  8. Leetcode 400.第n个数

    第n个数 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字. 为整形范围内 ( n < 231). 示例 1: 输入: 3 输出 ...

  9. HDU-3065 病毒侵袭持续中 AC自动机又是一板子!

    病毒侵袭持续中 上一题是求出现多少病毒输出病毒序号,而这题输出每个病毒出现的次数.这题有字典树基础都能做出来,把叶子节点用相应的编号标记起来,匹配的时候遍历到叶子节点用一个数组把次数存起来就行了. 有 ...

  10. DIV垂直/水平居中2(DIV宽度和高度是动态的)

    <!doctype html><html><head><meta charset="utf-8"><title>块元素D ...