自從周以來,我一直在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