`
lizaochengwen
  • 浏览: 643878 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iOS开发中怎么响应内存警告

 
阅读更多
好的应用应该在系统内存警告情况下释放一些可以重新创建的资源。在iOS中我们可以在应用程序委托对象、视图控制器以及其它类中获得系统内存警告消息。
1、应用程序委托对象
在应用程序委托对象中接收内存警告消息,需要重写applicationDidReceiveMemoryWarning:方法。AppDelegate的代码片段:
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

{

NSLog(@”AppDelegate中调用applicationDidReceiveMemoryWarning:”);

}
2、视图控制器
在视图控制器中接收内存警告消息,需要重写didReceiveMemoryWarning方法。ViewController的代码片段:
- (void)didReceiveMemoryWarning

{

NSLog(@”ViewController中didReceiveMemoryWarning调用”);

[super didReceiveMemoryWarning];

//释放成员变量

[_listTeams release];

}
注意释放资源代码应该放在[super didReceiveMemoryWarning]语句下面。
3、其它类
在其它类中可以使用通知,在内存警告时候iOS系统会发出 UIApplicationDidReceiveMemoryWarningNotification通知,凡是在通知中心注册了 UIApplicationDidReceiveMemoryWarningNotification通知的类都会接收到内存警告通知。 ViewController的代码片段:
- (void)viewDidLoad

{

[super viewDidLoad];

NSBundle *bundle = [NSBundle mainBundle];

NSString *plistPath = [bundle pathForResource:@"team"

ofType:@"plist"];

//获取属性列表文件中的全部数据

NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];

self.listTeams = array;

[array release];

    //接收内存警告通知,调用handleMemoryWarning方法处理

    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

    [center addObserver:self

               selector:@selector(handleMemoryWarning)

                   name:UIApplicationDidReceiveMemoryWarningNotification

                 object:nil];

}

//处理内存警告

-(void) handleMemoryWarning

{

    NSLog(@”ViewController中handleMemoryWarning调用“);

}
我们在viewDidLoad方法中注册UIApplicationDidReceiveMemoryWarningNotification消 息,接收到报警信息调用handleMemoryWarning方法。这些代码完全可以写在其它类中,在ViewController中重写 didReceiveMemoryWarning方法就可以了,本例这是示意性介绍一下 UIApplicationDidReceiveMemoryWarningNotification报警消息。
内存警告在设备上出现并不是经常的,一般我们没有办法模拟,但模拟器上有一个功能可以模拟内存警告,启动模拟器,选择模拟器菜单硬件→模拟内存警告,这个时候我们会在输出窗口中看到内存警告发生了。
2012-11-06 16:49:16.419 RespondMemoryWarningSample[38236:c07] Received memory warning.
2012-11-06 16:49:16.422 RespondMemoryWarningSample[38236:c07] AppDelegate中调用applicationDidReceiveMemoryWarning:
2012-11-06 16:49:16.422 RespondMemoryWarningSample[38236:c07] ViewController中handleMemoryWarning调用
2012-11-06 16:49:16.423 RespondMemoryWarningSample[38236:c07] ViewController中didReceiveMemoryWarning调用


原文:http://www.cr173.com/html/19264_1.html
分享到:
评论

相关推荐

    解析iOS内存不足时的警告以及处理过程

    主要介绍了iOS内存不足时的警告以及处理过程,包括View Controller和生命周期等相关方面的知识,需要的朋友可以参考下

    iOS调试工具AllYourMemoriesAreBelong2iOS.zip

    在开发过程中,为了测试应用能否对 iOS 系统的内存警告通知作出正确响应,经常需要开发者手动模拟该消息的产生。iOS 模拟器中提供了直观的方式模拟向当前运行的应用发送内存使用警告。但是当开发者需要在真机上测试...

    IOS 常见内存泄漏以及解决方案

    1 OC和CF转化出现的内存警告 CFStringRef cfString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)picDataString,NULL,CFSTR(:/?#[]@!$&'()*+,;=),kCFStringEncodingUTF8); ...

    SPDebugMenu:供 iOS 开发人员使用完全可自定义的操作在其应用中显示调试菜单的库

    在您的设备中模拟内存警告通知安装使用 CocoaPods 将 SPDebugMenu 添加到您的 Podfile: platform :ios, "6.0"pod 'SPDebugMenu'运行以下命令: pod install静态库克隆项目或将其添加为子模块。 将SPDebugMenu....

    ios开发记录

    //判断两个字符串是否相等,不能使用==,使用等号是判断两个对象是否是一个对象,也就是是否是一个内存地址。 //判断字符串的内容是否相同应该使用nsstring的isEqualToString:方法 //在低版本的时候,如果直接点击...

    iPhone应用程序开发指南.中文.pdf

    观察低内存警告 25 定制应用程序的行为 25 以景观模式启动 25 和其它应用程序进行通讯 26 实现定制的URL模式 27 显示应用程序的偏好设置 31 关闭屏幕锁定 31 国际化您的应用程序 32 性能和响应速度的调优 34 不要...

    object开发的基本流程.doc

    Objective-C开发的基本流程主要包括以下几个关键步骤: 环境搭建:首先,你需要安装Xcode,这是Apple官方提供的集成开发环境(IDE),...在编译过程中,如果代码中存在错误或警告,Xcode会指出这些问题,你需要根据

    iphone开发笔记

    警告视图 4 动画效果 4 图像、文本标签和详细文本标签 6 调整输入界面 7 UIViewController内建Table View 7 将plist文件中的数据赋给数组 8 UITouch 8 Get the Location of Touches 9 Getting Touch Attributes 9 ...

    iOS ARC 完全指南

    iOS ARC 完全指南OS5ARC完全指南 GuanGyi Inc http://www.gungyi.com ARC完全指南 最显著的变化就是增加了 动引用计数)。是新 编译器的特性,完全消除了手动内 存管理的烦琐。在你的项目中使用是非常简单的,所有的...

    sentry-dotnet-xamarin:Xamarin.Forms的哨兵

    用于Xamarin的Sentry SDK 整合方式资料下载NuGet稳定NuGet预览Sentry.Xamarin.Forms 哨兵萨马林 这是Xamarin的开发中SDK。 包括Xamarin Essentials支持的所有平台: 自动导航。 (Xamarin.Forms) Xaml警告作为面包...

    JRCImageLoader 图片多线程下载(iPhone源代码)

     集成于UIImageView,加载本地图片以及加载网络图片皆可以,可按照原图比例在一定范围内展示图片,并缓存在内存中,可按照添加的时间范围删除内存中的image,在内存警告时,清除全部缓存中的image,支持断点续传,...

    【最新版】wechat_devtools_1.02.2004020.dmg【亲测可用】最好的微信开发者工具

    A 新增 云开发环境中的存储桶被删除时,支持在云控制台中创建存储桶 A 新增 新建 Page 失败后会给出失败提示 A 新增 JSServer 支持文件 diff A 新增 不再存储 project.config.json 里自定义编译条件的 current 值...

    疯狂java培训项目源码-DeepBeliefSDK:Jetpac的iOSDeepBelief图像识别框架的SDK

    处理代码经过高度优化,可以在现代移动设备的内存和处理限制内运行,并且可以在 iPhone 5S 上在 300 毫秒内分析图像。 与 OpenCV 一起使用也很容易。 我们发布此框架是因为我们对这种通用图像识别方法的强大功能感到...

    chrome.exe

    2013年4月份,Google宣布称将为Chrome浏览器开发新的自主浏览器引擎Blink,在最新的Chrome开发版本中,Blink已经正式现身。 [7] 几乎隐身 说Chrome的界面简洁不足以说明其简洁程度。Chrome几乎不像是一款应用软件...

Global site tag (gtag.js) - Google Analytics