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


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类。

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

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

  1. ios6 处理内存警告

    iPhone下每个app可用的内存是被限制的,如果一个app使用的内存超过20M,则系统会向该app发送Memory Warning消息.收到此消息后,app必须正确处理,否则可能出错或者出现内存泄露 ...

  2. UIViewController的生命周期及iOS程序执行顺序 和ios6 处理内存警告

    当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc                                   创建对象,分配空间2.init (initWithN ...

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

    前开后闭开区间表示法[) 任何一个STL算法,都需要获得由一对迭代器(泛型指针)所标示的区间,用以表示操作范围,这一对迭代器所标示的是个所谓的前闭后开区间,以[first,last)表示,也就是说,整 ...

  4. 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能

    原文:[原创]构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)-托管资源优化-监测CLR性能 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测C ...

  5. Redis内存使用达到maxmemory设定值后玩家数据无法写入解决 Redis数据“丢失”问题

    Redis数据“丢失”问题 - CSDN博客 https://blog.csdn.net/real_myth/article/details/52582739 Redis内存使用达到maxmemory ...

  6. 探究C语言中的前++和后++

    小波带您探究c语言中的前++与后++: 欢迎吐槽,欢迎加QQ463431476. 欢迎关注!  现在来探究: 咱们先看第一个 i被赋值0,i++(后++)并没有输出1.   现在i被赋值0,++i,也 ...

  7. HMM 自学教程(七)前向后向算法

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  8. HMM 前向后向算法(转)

    最近研究NLP颇感兴趣,但由于比较懒,所以只好找来网上别人的比较好的博客,备份一下,也方便自己以后方便查找(其实,一般是不会再回过头来看的,嘿嘿 -_-!!) 代码自己重新写了一遍,所以就不把原文代码 ...

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

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

随机推荐

  1. ie8下jquery读取当前点击的标签位置错误,原因是里面有内容写了text-indent:-9999px

    今天写一地图的效果,鼠标点击对应的区域,弹出所点击区域的名字. 因为设计的区域名字有特殊效果,所以,在点击区域里面套了个标签写上区域名字用来识别,但是这个文字呢不同显示在页面上,所以就给 em 加个了 ...

  2. ArrayList与Vector、HashMap与HashTable

    摘自api: 1.ArrayList与Vector: 原文:This class(ArrayList) is roughly equivalent to Vector, except that it ...

  3. eMMC尺寸

    eMMC Physical Specifications主要有四种结构,pin角定义及功能上基本一致,主要是看应用平台的需求: AA:12mm*16mm 169Pin  AB:12mm*18mm 16 ...

  4. 利用if else 求已发奖金总数

    class Program    {        static void Main(string[] args)        {            while (true)           ...

  5. Json遇到引号需要转义的问题

    首先看一个简单的Json格式的数据: {data:{id:1,text:"this is text",src:"abc/abc/abc.png"},succes ...

  6. CentOS升级Python的方法

    centOS内核版本为:3.10.101-1.el6.elrepo.x86_64 1,下载Python安装包 wget http://www.python.org/ftp/python/2.7.6/P ...

  7. JavaScript向表格中添加按钮和文本输入框

    例子: <?php ?> <html> <head> <meta http-equiv="Content-Type" content=&q ...

  8. (转载)javascript经典例子

    (转载)http://www.blogjava.net/hadeslee/archive/2007/11/24/161778.html 一.验证类1.数字验证内1.1 整数1.2 大于0的整数 (用于 ...

  9. EntityFramework在不同数据库下的配置

    1.SQLServer: <connectionStrings> <add name="EntityDesignEntities" connectionStrin ...

  10. asp.net用户检测的两种方式

    第一种方式(继承System.Web.UI.Page类,重写OnInit方法):    public class CheckSession : System.Web.UI.Page     {     ...