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-10-25 20:42:50

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

ios6 处理内存警告

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

当应用程序接收到内存警告的时候怎么处理?

当收到内存警告的时候,应用程序会将警告一级一级往下传递,传递顺序是UIApplication->UIWindow->rootViewController(如果有子控制器)->childViewControllers. 当控制器接收到警告之后,就会调用didReceiveMemoryWarning方法.一般会在这个方法中做几件事: 1.在iOS6之前的处理方式(见图) 2.在iOS6之后的处理方式如下: - (void)didReceiveMemoryWarning { [super di

二、当应用接收到内存警告时应该怎么处理

当收到内存警告的时候,应用程序会将警告一级一级往下传递,传递顺序是UIApplication->UIWindow->rootViewController(如果有子控制器)->childViewControllers. 当控制器接收到警告之后,就会调用didReceiveMemoryWarning方法.一般会在这个方法中做几件事: 1.在iOS6之前的处理方式(见图) 2.在iOS6之后的处理方式如下: - (void)didReceiveMemoryWarning { [super di

ios系统 处理内存警告

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

UIViewController内存警告管理

ios3.0 ios5.0 步骤 应用收到内存警告. 每个ViewController调用自己的didReceiveMemoryWarning方法. 判断view是否当前显示在屏幕上,如果是当前页,则流程结束. ViewController调用viewWillUnload方法. ViewController设置它的View为空.(清view) ViewController调用viewDidUnload方法. ios6.0及以后: 取消了viewdidunload和viewwilldidunloa

解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题

解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题 iOS开发 · 2015-01-22 11:31 MWPhotoBrowser是一个非常不错的照片浏览器,在github的star接近3000个,地址:https://github.com/mwaterfall/MWPhotoBrowser.git MWPhotoBrowser来加载小图1M以下的都应该不会有内存警告的问题.如果遇到大图,3M.4M.5M的大图,很有可能导致内存警告.最近我就遇到这个问题,很是头疼

视图控制器、MVC、屏幕旋转、内存警告

使用视图控制器的步骤: 1.创建一个根视图控制器 aController 2.在AppDelegate中引用aController的头文件,并且指定AppDelegate的根视图控制器为aController,代码如图: 3.设置了AppDelegate的根视图控制器,但是aController视图控制器的默认视图是空白视图,并且背景色是透明色,所以如果想要显示内容,就有两种方法,一种是:直接在viewDidLoad方法中创建视图,并且添加到根视图上面(viewDidLoad是视图控制器自带的根

UI第三讲.自定义视图 视图控制器指定自定义view 检测屏幕旋转 处理内存警告 容器视图控制器

一.自定义视图 (自定义label-textField视图) 目的:为了进一步优化登录界面,提高代码的精简程度和复用性,可移植性,从而需要在原有视图控件的基础之上自由组合成自定义视图. 一般自定义的视图会继承于UIView.以下是自定义视图的要点和步骤: 1.创建一个UIView子类 2.在类的初始化方法中添加子视图 3.类的.h文件提供一些接口(方法),便于外界操作子视图. 例子及相应代码: 例题:假设我们使用LTView类代表label-textfield视图.创建一个LTView类继承于U