iOS_响应内存警告

2016-08-29  本文已影响191人  青葱烈马

好的应用应该在系统内存警告的情况下,释放一些可以重新创建的资源. 在 iOS 中,我们可以在应用程序委托对象, 视图控制器以及其他类中获得系统内存警告消息.

<b>1.应用程序委托对象</b>
在应用程序委托对象中接收到内存警告消息,需要重写 applicationDidReceiveMemoryWarning:方法,

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application{
        NSLog(@"appDelegate 中调用applicationDidReceiveMemoryWarning:");
}

<b>2.视图控制器</b>
在视图控制器中接收内存警告消息,需要重写 didReceiveMemoryWarning:方法.

- (void)didReceiveMemoryWarning {
    NSLog(@"ViewController 中的didReceiveMemoryWarning调用");
    [super didReceiveMemoryWarning];
    
    // 释放资源代码应该放在 [super didReceiveMemoryWarning]; 语句后面.
}

<b>3.其他类</b>
在其他类中可以使用通知. 在内存警告是, iOS 系统会发出 UIApplicationDidReceiveMemoryWarningNotification 通知, 凡是在通知中心注册了该通知的类都会接受到内存警告通知,

- (void)viewDidLoad {
     [super viewDidLoad];
    // 接收到内存警告通知,调用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报警信息.

内存警告在设备上并不经常出现, 一般我们没有办法模拟, 但是模拟器上有一个功能可以模拟内存警告. 启动模拟器, 选择"硬件" -> "模拟内存警告" 模拟器菜单, 这是我们会在输出窗口看到内存警告发生了.

上一篇 下一篇

猜你喜欢

热点阅读