我正在使用 MapView 和 UIImagePicker 创建一个应用程序。当用户继续前进时,我正在屏幕上显示地图及其显示路线。用户可以在两者之间捕获图像。我有两个屏幕。
- 显示地图
- 捕获图像(这是从屏幕 1 推送的)
当我从屏幕 1 转到屏幕 2 时。我显示一个 ImagePicker 并允许用户捕获图像。当我弹回屏幕 1 时,我release
将所有对象都制作出来nil
。这个任务通常完成,viewDidUnload
但我遇到了内存问题,所以当我的视图控制器弹出时我就做了。因此,一旦我完成所有对象,它们就会被释放并为零。
当我从地图进入我的登录屏幕时,我正在做我所知道的每一件事:
- 从超级视图中删除视图
- 释放所有关联对象或保留对象(甚至包括 NSString 对象)
nil
为所有这些对象设置值。
当我通过分析运行应用程序并且没有可用的运行时泄漏但即使在活动监视器中,我的应用程序的真实内存也在不断增加:(
在捕获了 10-12 张图像后,Received memory warning. Level=1
我什至没有将 UIImage 对象存储在内存中。我在文档目录中写这个并且只存储字符串路径。
请帮助我并指导我还能做些什么来解决这个问题。
更新
在后退按钮上释放对象时,我正在使用:
- (void)releaseObjects {
[mapViewNewTour setDelegate:nil];
[mapViewNewTour removeFromSuperView];
[mapViewNewTour release];
mapViewNewTour = nil;
[lblNavTitle release];
lblNavTitle = nil;
[btnEdit release];
btnEdit = nil;
[txtTourName release];
txtTourName = nil;
[vwTourName release];
vwTourName = nil;
[mutDictOfflineSharing release];
mutDictOfflineSharing = nil;
[mutArrImage release];
mutArrImage = nil;
[_routeLine release];
_routeLine = nil;
[_routeLineView release];
_routeLineView = nil;
[aLazyLoader release];
}