自从周以来,我一直在iphone应用程序中遇到内存问题,尽管在线进行了全面的研究,但仍无法解决问题。查看卸载和dealloc后未释放iPhone内存,为什么?
以下是案例: 我的应用程序与Google AnalyticsAPI进行通信,它基于3个基本视图:主视图,设置视图和显示谷歌(带有自定义单元格)数据的tableview视图。我还构建了一个自定义类,用于从Google获取数据,然后在完成时自行终止。所有数据都存储在singelton数据中心中。
所有视图发起,然后释放如下:
if (self.vVisitsTabelView == nil) {
visitsTabelView *initiatevisitsTabelView = [[visitsTabelView alloc] initWithNibName:@"visitsTabelView" bundle:nil];
self.vVisitsTabelView = initiatevisitsTabelView;
[initiatevisitsTabelView release];
}
[self.navigationController pushViewController:vVisitsTabelView animated:YES];
[vVisitsTabelView release];
vVisitsTabelView = nil;
的问题是,通过对视内存增加每一个加载,但当视图被弹出它不释放内存虽然dealloc中被称为和所有实例变量正在释放。这个循环发生在一遍(同时重新加载相同的视图)并且内存消耗变得非常高。在要求使用后,我甚至在仪器上获得了200MB的真实内存和320个虚拟内存。奇怪的是,一次只收到一次内存警告,但是由于内存不足,我的应用程序从未崩溃,仪器显示没有泄漏。
进入后台后,内存缓慢释放并被其他应用程序使用,但是当我返回到前台时,回忆到进入背景前的水平(可能形成虚拟内存?)。这个过程需要9秒钟的时间,应用程序被冻结。
任何想法如何攻击这种情况?我到处搜索并仔细地遵循所有指导原则。
任何铅的高度赞赏...
请原谅我,如果我没有遵守的准则,这是我第一次在这个美妙的地方。
非常感谢您的快速回复...将移动到ARC效果旧的IOS版本兼容性?可以说IOS 3.3? – Sheni
ARC只能在iOS 4.3及更高版本上使用,因此您不得不放弃对iOS3和较早版本iOS4的支持。 –
retainCount没用。使用分配工具确定保留但未释放对象的内容。 – bbum