`

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调用

分享到:
评论

相关推荐

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

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

    iOS-iphone-真机测试调试包14.5

    在iOS开发过程中,真机测试和调试是至关重要的步骤,确保应用在真实设备上运行顺畅,无误。这个“iOS-iphone-真机测试调试包14.5”显然是为针对苹果iPhone设备上的iOS 14.5版本进行测试而准备的。下面将详细介绍iOS...

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

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

    ios开发心得.rar

    开发者需要了解如何控制应用程序在不同状态下的行为,如初始化、内存警告、后台运行等。同时,后台模式的使用,如后台音频播放、位置更新和后台任务执行,也需要仔细规划和实现。 除此之外,iOS应用的性能优化是...

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

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

    SDWebImage内存警告修复版

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

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

    3. **其他类**:若其他类也需要响应内存警告,可以注册`UIApplicationDidReceiveMemoryWarningNotification`通知。例如,可以在这里清除缓存数据,以减少内存占用。 关于View Controller的生命周期,有以下几个关键...

    高性能ios开发ppt.pdf

    ### 高性能iOS开发——内存管理与质量提升 #### 内存管理 在iOS开发过程中,内存管理是一项至关重要的技能。良好的内存管理不仅能确保应用程序运行流畅、响应迅速,还能有效避免程序崩溃。以下是对高性能iOS开发中...

    移动应用开发-iOS开发示例教程之多图片多线程下载.zip

    7. **内存管理**:当内存警告发生时,iOS可能会杀死应用以释放资源。因此,我们需要合理地管理下载的图片,避免占用过多内存。 8. **图片缓存**:为了进一步优化性能,可以使用第三方库如SDWebImage或...

    iOS内存暴增问题追查与使用陷阱.docx编程资料

    在iOS开发过程中,内存管理一直是开发者面临的一项重要挑战。不合理的内存管理不仅会导致应用运行缓慢,还可能导致应用崩溃,严重影响用户体验。本文旨在深入探讨iOS平台下的内存管理机制、 autorelease机制以及内存...

    iOS-网络图片加载demo

    项目可能包含了对内存警告的响应,以及在必要时清理缓存的逻辑。 通过研究这个项目,开发者可以深入理解如何在iOS应用中高效地加载网络图片,同时也能学习到如何利用缓存和异步操作提升用户体验。这是一个很好的...

    swift-Dotzu一个iOS开发人员的调试工具

    **Swift开发:Dotzu——iOS开发者的调试利器** 在iOS应用开发过程中,调试是一个不可或缺的环节,它能帮助开发者深入理解代码运行状态,快速定位并解决问题。Dotzu是一款专为iOS开发者设计的强大调试工具,它提供了...

    iOS UI开发心得

    在iOS开发中,UIResponder是一个核心的概念,它不仅作为UIApplication、UIWindow、UIView等核心类的超类,还定义了对象如何响应和控制事件的接口。UIResponder类的存在使得开发者能够更加灵活地处理用户的各种输入...

    IOS编程第2版

    第七章深入讨论了视图控制器的使用,包括生命周期管理、响应内存警告等。 - **XIB文件**:XIB文件用于保存视图的布局信息。本书解释了如何使用XIB文件来创建和管理复杂的用户界面。 #### 六、数据持久化与网络通信...

    ios-图片查看.zip

    在iOS开发中,图片查看是用户界面不可或缺的一部分,特别是在社交应用如QQ动态空间中,用户经常需要浏览和交互各种图片。本压缩包“ios-图片查看.zip”可能包含了一个实现图片查看功能的示例代码或者资源,特别是...

    QMUI iOS——致力于提高项目 UI 开发效率的解决方案.zip

    在iOS开发中,QMUI 提供了以下关键知识点: 1. **UI组件库**:QMUI 包含了大量的预设UI组件,如按钮、标签、输入框、列表视图等,这些组件已经过精心设计和优化,可以直接在项目中使用,减少自定义视图的工作量。 ...

    Beginning iOS 5 Development Exploring the iOS SDK

    这包括了解应用程序如何启动、暂停、恢复和终止,以及如何处理内存警告。同时,事件驱动模型也是iOS开发的重要概念,例如触摸事件、手势识别和多任务处理。 UIKit框架是iOS开发中的基石,它包含了一系列用于构建...

    ios 网页视图与警告视图u

    在iOS开发中,网页视图(WebView)和警告视图(Alert View)是两种非常重要的UI组件,它们分别用于展示网络内容和与用户进行交互。接下来,我们将详细探讨这两个概念及其在实际应用中的使用。 首先,让我们来看看...

Global site tag (gtag.js) - Google Analytics