[英]iOS4 - fast context switching
當應用程序進入后台運行狀態時,有多少臟內存使用是好的。 在蘋果視頻中,我們提到應盡可能減少臟記憶。
但在我的應用程序中,我使用導航控制器來推送和彈出視圖。 從大約20個不同頁面移動后,臟內存使用量達到30 MB左右。
同樣在“dismissModalViewControllerAnimated”和“popViewControllerAnimated”上,不調用dealloc。
我有兩個疑問:
提前致謝。
如果沒有調用dealloc,你仍然可以保留你的UIViewControllers。
也許你在這些UIViewControllers中設置委托或其他類來保留和引用備份樹(循環引用)。
一種可以調試的方法是在UIViewController中重載retain和release,並設置一個斷點並記錄retainCount。
這是一個我離開的神奇片段,當我無法弄清楚為什么我還在保留某些東西時,這對我幫助很大。
- (id)retain
{
NSLog(@"retain \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
return [super retain];
}
- (void)release
{
NSLog(@"release \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
[super release];
}
- (id)autorelease
{
NSLog(@"autorelease \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
return [super autorelease];
}
__PRETTY_FUNCTION__
是CLang中一個特殊的隱藏宏,它提供了一個非常好的Objective-C函數名作為char數組。
UINavigationController
處理后退按鈕的任何其他內容。 我認為這里的問題是如果沒有調用pop或dismiss上的dealloc
,你就會發生內存泄漏 幾乎所有視圖控制器都有有效緩存的數據,並且可以在應用程序返回前台時重新生成。 想一想當應用程序運行時收到內存警告時釋放的數據。 (你正在回應內存警告,對嗎?)這是你進入后台時應該釋放的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.