一 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. LeetCode 637. Average of Levels in Binary Tree(层序遍历)

    Given a non-empty binary tree, return the average value of the nodes on each level in the form of an ...

  2. awk中next以及getline用法示例

    在awk中,如果调用next,那么next之后的命令就都不执行了.此行文本的处理到此结束,开始读取下一条记录并操作. 实例如下: [plain] view plain copy zoer@ubuntu ...

  3. spring配置datasource三种方式 数据库连接池

    尊重原创(原文链接):http://blog.csdn.net/kunkun378263/article/details/8506355 1.使用org.springframework.jdbc.da ...

  4. Java-从一个字符串获取子字符串

    substring函数 package com.tj; public class MyClass implements Cloneable { public static void main(Stri ...

  5. luogu2526 [SHOI2001]小狗散步

    注意一个景点只能去一次. #include <iostream> #include <cstring> #include <cstdio> #include < ...

  6. WordPress添加前台注册功能

    一.添加注册表单 1.首先在当前主题的目录下新建一个php文件,命名为reg-page.php,然后将page.php中的所有代码复制到reg-page.php中: 2.删除reg-page.php开 ...

  7. mac osx下apache下的坑: you don’t have permission to access / on this server

    在Mac下Apache修改默认站点的目录时,遇到403错误, you don’t have permission to access / on this server 首先按照google到教程: 修 ...

  8. 【bzoj1532】[POI2005]Kos-Dicing 二分+网络流最大流

    题目描述 Dicing 是一个两人玩的游戏,这个游戏在Byteotia非常流行. 甚至人们专门成立了这个游戏的一个俱乐部. 俱乐部的人时常在一起玩这个游戏然后评选出玩得最好的人.现在有一个非常不走运的 ...

  9. 【Luogu】P3800点收集(DP)

    题目链接 原题解 代码 #include<iostream> #include<cstdio> #include<cstring> #include<ccty ...

  10. BZOJ 2242 [SDOI2011]计算器 ——EXGCD/快速幂/BSGS

    三合一的题目. exgcd不解释,快速幂不解释. BSGS采用了一种不用写EXGCD的方法,写起来感觉好了很多. 比较坑,没给BSGS的样例(LAJI) #include <map> #i ...