ios6如何处理内存,分别为前警告后

这里有一篇文章。非常具体地说明了ios6前后是怎样处理内存警告的:

来自唐巧的技术博客:http://blog.devtang.com/blog/2013/05/18/goodbye-viewdidunload/

1、ios4和ios5中,当收到内存警告时,系统会自己主动调用当前没有在界面上的VC的viewDidUnload方法。

在viewDidUnload写下例如以下代码:

 if([self isViewLoaded] && ![[self view] window]) {
        [self setView:nil];
    }

2、ios6開始,viewDidUnload被弃用。苹果在开发文档中建议将内存回收的操作移到didReceiveMemoryWarning中。

那又要在didReceiveMemoryWarning写下什么才干回收内存呢?

最好的答案是,什么都不写,仅仅调用父类的相应方法!

3、这里简短地解释一下为什么ios6不在didReceiveMemoryWarning中将VC的view属性设为nil。

UIView有一个CALayer的成员变量,负责管理UIView的画图。

CALayer是一个位图图像的容器类,当UIView调用drawRect的时候。CALayer才会创建这个位图图像类。

而一个UIView占用内存的绝大部分是这个位图图像类。

所以。ios6在系统发出内存警告的时候。会自己主动回收这个位图图像类。可是不回收UIView和CALayer类。

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

时间: 2024-08-05 19:35:04

ios6如何处理内存,分别为前警告后的相关文章

ios6前后分别如何处理内存警告

这里有一篇文章,很详细地说明了ios6前后是如何处理内存警告的: 来自唐巧的技术博客:http://blog.devtang.com/blog/2013/05/18/goodbye-viewdidunload/ 1.ios4和ios5中,当收到内存警告时,系统会自动调用当前没有在界面上的VC的viewDidUnload方法. 在viewDidUnload写下如下代码: if([self isViewLoaded] && ![[self view] window]) { [self setV

ios6 处理内存警告

iPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息.收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露. app收到Memory Warning后会调用:UIApplication::didReceiveMemoryWarning -> UIApplicationDelegate::applicationDidReceiveMemoryWarning,然后调用当前所有的viewController进

STL——前闭后开区间表示法和function call 操作符

前开后闭开区间表示法[) 任何一个STL算法,都需要获得由一对迭代器(泛型指针)所标示的区间,用以表示操作范围,这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示,也就是说,整个实际范围从first开始,直到last-1.迭代器last所指的是“最后一个元素的下一位置”.这种off by one(偏移一格,或说pass the end)的标示法,带来了很多方便,例如下面两个STL算法的循环设计,就显得干净利落: template<class InputIterator,c

前闭后开区间表示法

 任何一个STL算法,都需要获得由一对迭代器(泛型指针)所标识的区间,用以表示操作范围.这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示.也就是说,整个实际范围从first开始,知道last-1.迭代器last所指的是"最后一个元素的下一位置".这种偏移一格的标示法,带来了许多方便,例如下面两个STL算法的循环设计,就显得干净利落: template <class InputIterator,classT> InputIterator find

main函数执行前、后再执行的代码

一.main结束 不代表整个进程结束  (1)全局对象的构造函数会在main 函数之前执行,          全局对象的析构函数会在main函数之后执行:          用atexit注册的函数也会在main之后执行.  (2)一些全局变量.全局对象和静态变量.对象的空间分配和赋初值就是在执行main函数之前,而main函数执行完后,还要去执行一些诸如释放空间.释放资源使用权等操作  (3)进程启动后,要执行一些初始化代码(如设置环境变量等),然后跳转到main执行.全局对象的构造也在ma

二叉树的前中后序遍历简单的递归

二叉树的遍历 无外乎广度和深度 其中深度又分为前中后序遍历三种情况  这三种遍历若只是递归方法 自然很是简单 但递归代码简单 若嵌套层次太深 会栈溢出 二叉树节点数据结构: struct Binary_node{    int val;    Binary_node *left;    Binary_node *right;    Binary_node(int v = 0, Binary_node *le = nullptr, Binary_node *ri = nullptr) :val(v

HMM 前向后向算法(转)

最近研究NLP颇感兴趣,但由于比较懒,所以只好找来网上别人的比较好的博客,备份一下,也方便自己以后方便查找(其实,一般是不会再回过头来看的,嘿嘿 -_-!!) 代码自己重新写了一遍,所以就不把原文代码贴过来了. 1. 前向算法(摘自http://www.cnblogs.com/kaituorensheng/archive/2012/12/01/2797230.html) 隐马模型的评估问题即,在已知一个观察序列O=O1O2...OT,和模型μ=(A,B,π}的条件下,观察序列O的概率,即P(O|

js 获取当前日期或者前、后N天yyyy-MM-dd的方法

//js获取当前日期.当前日期前.后N天的标准年月日 //day=0为当前天,day=7为前7天,day=-7为当前日期的后7天 function getstartdate(day) {            var beginDate;            var curr_time = new Date();            var week_time = new Date(curr_time.getTime() - 1000 * 60 * 60 * 24 * day);      

隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在隐马尔科夫模型HMM(一)HMM模型中,我们讲到了HMM模型的基础知识和HMM的三个基本问题,本篇我们就关注于HMM第一个基本问题的解决方法,即已知模型和观测序列,求观测序列出现的概率. 1. 回顾HMM问题一:求观测序列的概率 首先我们回顾下HMM模型的问题一.这个