2010-06-17 73 views
0

我正在开发一个已经开发的应用程序,但是在开发阶段没有考虑到内存管理。 那么,一旦出现内存警告,我应该怎么做才能保持App内存使用率较低? 是否有任何通用工具或某些代码可用于释放任何未使用的内存?iPhone内存问题

回答

1

两件事。首先,如果您使用任何类型的视图层次结构(标签栏,UINavigationController或您自己推出的某个东西),则消息将向上传播。这意味着根级UIViewController子类中的内存消息的一个处理程序可以处理整个应用程序的内存事件,这非常方便。

其次,你想追求低垂的果实。在我目前正在研究的应用程序中,我有几个不同的包含应用程序数据的字典数组,每个这些字典都包含缩略图和较大的图像。显然,这些构成了我记忆中的大部分内容。所以我的根视图控制器在得到内存警告时做的第一件事是通过这些数据集并将这些图像设置为nil。因为它们是保留的属性,所以在调用setter时调用它们并释放内存中的图像。然后我在视图控制器中有函数来注意这些图像字段的无效性并从服务器重新加载它们。顺便说一下(好吧......两件事情和一个“顺便说一句”),记忆警告不是问题。有些人似乎对让他们感到不好,想重新设计关于他们的应用程序的一切,所以他们从来没有得到过。这真的没有必要;即使是最好设计的应用程序也会偶尔发出内存警告,只是因为设备上的后台应用程序的不可预测性。重要的是要处理好他们。

0

你应该看看该方法

- (void)didReceiveMemoryWarning 
您UIViewControllers的

。当您收到内存警告时会调用此方法。在这里您可以释放当前未使用的对象。但是确定使用什么和不使用什么是你的一部分。

XCode的“构建和分析”功能是一种工具,可以用来查看代码是否包含任何明显的内存泄漏。

你应该看看在UIViewController类引用的一小部分“内存管理”: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

也是一个重要的文件是“内存管理编程指南”: http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html