如果我使用ARC,-didReceiveMemoryWarning是否有用?

时间:2014-03-07 02:23:41

标签: ios objective-c memory-management

当我在Xcode中创建UIViewController的新子类时,它带有默认方法,例如initviewDidLoad。最后一个是didReceiveMemoryWarning。这让我想到,如果我使用ARC,我应该担心吗?这是默认方法。

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

这里的关键字是dispose。由于我在使用ARC时无法在任何对象上显式调用release,我是否应该实现此方法?

2 个答案:

答案 0 :(得分:6)

是。使用ARC或MRC没有区别。无论哪种方式,您的应用程序都可能获得内存警告使用didReceiveMemoryWarning清理您可以使用的任何内存,例如清空缓存等等。

您仍然可以清除ARC下的对象,以便取消分配它们。您只需要删除对象的所有引用。

答案 1 :(得分:0)

是的,你应该实现它,即使你只是“按原样”保留它。只需调用[super didReceiveMemoryWarning]即可让您的应用在内存不足的情况下清理内存(这可能是由您的应用以外的其他原因造成的),例如发布缓存图像(例如通过imageNamed或Storyboard加载)或视图当前不可见。

一篇好文章:Managing Memory Level Warnings