`
lizaochengwen
  • 浏览: 662158 次
  • 性别: 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应用从启动到运行再到退出的过程,以及如何处理屏幕旋转、内存警告等事件。此外,iOS支持多种后台模式,如后台音频、后台定位和后台刷新等,开发者需了解何时及如何使用这些模式。 网络编程是...

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

    内存警告 ios下每个app可用的内存是被限制的,如果一个app使用的内存超过了这个阀值,则系统会向该app发送Memory Warning消息。收到消息后,app必须尽可能多的释放一些不必要的内存,否则OS会关闭app。 几种内存警告...

    ios 系统当前可用内存

    当应用占用过多内存时,系统可能会发送内存警告,促使应用释放资源,以避免系统崩溃。 为了监控iOS设备的当前可用内存,开发者可以使用Apple提供的Core Services框架中的`NSProcessInfo`类。这个类提供了关于当前...

    获取设备内存大小和剩余内存大小

    在iOS开发中,了解设备的内存状态对于优化应用程序性能至关重要。获取设备的总内存大小和剩余内存大小可以帮助开发者更好地管理内存资源,防止内存泄漏,并确保应用流畅运行。下面将详细介绍如何在iOS中获取这些信息...

    SDWebImage内存警告修复版

    在iOS开发中,内存警告是系统对应用内存消耗过高的一种提示。当iOS检测到设备内存紧张时,会向应用发送内存警告,要求其释放不必要的资源以减轻内存压力。如果应用未能响应,可能会导致App被强制退出,用户体验大打...

    IOS应用源码Demo-获取当前硬件可用内存的例子UIDevice-毕设学习.zip

    - 通过监控内存变化,开发者可以在代码中适时释放不再使用的对象,避免内存警告和程序无响应。 4. **示例代码**: 通常,获取内存信息的代码可能会像这样: ```swift var taskInfo = mach_task_basic_info() ...

    ios程序 内存优化记录LOG日志-20130112

    首先,Instrument是iOS开发中的一个强大的工具,它可以用于检测应用程序的内存使用情况、性能瓶颈以及其他问题。通过监控Log日志,开发者可以发现内存消耗的峰值以及与之相关的代码行,以便进行优化。 在提供的部分...

    ios开发心得.rar

    标题“ios开发心得.rar”和描述“ios开发心得”暗示了这份文档可能包含了作者在iOS应用开发过程中的经验、技巧和教训,这对于初学者和有经验的开发者来说都是宝贵的资源。在iOS开发中,涉及到的知识点广泛且深入,...

    iOS开发 常见的崩溃闪退原因(12点)1

    在iOS开发过程中,应用程序的稳定性和性能至关重要。然而,由于各种原因,开发者可能会遇到应用崩溃或闪退的情况。本文将详细介绍十二个常见的导致iOS应用崩溃的原因,并提供相应的预防措施。 1. **字典的key或...

    iOSUIWebView 优化 内存大大降低

    在iOS开发中,UIWebView是用于展示网页内容的重要组件,但它常常被诟病为内存消耗大,容易引发应用性能问题。本篇文章将深入探讨如何针对UIWebView进行优化,以实现内存的有效管理和降低。 首先,我们需要理解...

    iOS开发:我的初级到中级的晋级之路.zip

    开发者需要了解应用如何启动、进入后台、恢复以及暂停等状态,以及如何处理内存警告和低电量通知。同时,学习使用通知中心、URL Scheme、Core Data等系统服务来增强应用功能。 UI设计是iOS开发中的另一个关键环节。...

    IOS开发资料集

    了解iOS应用的生命周期是至关重要的,这涉及到应用在后台运行时的行为以及如何妥善处理内存警告。同时,iOS有严格的权限管理系统,开发者需要明确获取用户同意才能访问相机、位置等敏感数据。 **iOS设计原则与Human...

    移动应用开发-iOS开发示例教程之UIWebview.zip

    在iOS开发中,UIWebView是苹果提供的一种非常重要的组件,用于在应用程序内嵌入网页内容。这个"移动应用开发-iOS开发示例教程之UIWebview.zip"资源可能包含了一系列关于如何使用UIWebView进行移动应用开发的教学材料...

    Swift-OOMDetector是腾讯开源的一个iOS的内存监控组件

    在iOS开发中,内存管理是一个至关重要的环节,而OOM事件可能导致应用无响应甚至崩溃。Swift-OOMDetector能够实时监测应用的内存使用情况,当内存达到预设阈值时,会发出警告,从而帮助开发者及时发现可能导致OOM的...

    高性能ios开发ppt.pdf

    在iOS开发过程中,内存管理是一项至关重要的技能。良好的内存管理不仅能确保应用程序运行流畅、响应迅速,还能有效避免程序崩溃。以下是对高性能iOS开发中涉及的几个关键概念进行深入探讨。 ##### 基本操作 - **...

    iOS开发UI篇—IOS开发中Xcode的一些使用技巧.pdf

    在iOS开发中,Xcode是Apple官方提供的集成开发环境,用于创建iPhone、iPad和Mac应用程序。了解并熟练使用Xcode的技巧可以极大地提高开发效率。以下是一些关键的Xcode使用技巧,主要集中在UI开发方面: 一、快捷键的...

    ios_调试内存泄漏

    内存泄漏是iOS开发中的一个常见问题,它会导致应用的可用内存逐渐减少,最终可能导致应用崩溃或系统资源耗尽。为了有效地识别和解决内存泄漏问题,iOS开发者可以利用Xcode自带的工具进行分析和调试。以下是两种查看...

Global site tag (gtag.js) - Google Analytics