2010-10-23 80 views
1

使用iPhone SDK 4.1。有時,當從iPhone 3GS設備的背景狀態返回時,返回的視圖丟失了其圖像或標籤之一。當從後臺返回時,viewDidAppear方法 不會被調用。有沒有辦法強制 重新加載視圖,以便這些方法被調用?從背景返回時重新加載視圖

回答

3

如果您的應用程序因嘗試在RAM(在本例中爲圖像)中存儲太多數據而收到內存警告,通常會發生這種情況。

要測試是否出現這種情況,您可以在didReceiveMemoryWarning消息中執行NSLog調用,也可以繼承UIImage並擴展其dealloc,並在其中放入一條NSLog消息,例如「正在處理圖像」,然後檢查被寫入控制檯。如果你想檢查它而不在調試器(也就是沒有控制檯),你可以在mainwindow xib中的最前面創建一個調試UILabel(所以它總是可見的),它的文本值被設置而不是寫入NSLog。通過這種方式,即使返回到程序後,也能看到發生了什麼。

最好的辦法是將didReceiveMemoryWarning和UILabel對象一起使用。

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{ 
    [email protected]"Did receive memory warning"; 
} 

爲了解決這個問題(即重新加載圖像),你可以註冊一個觀點,從通知中心收到 的UIApplicationWillEnterForegroundNotification,然後調用必要再裝電話,即檢查該圖像是零(已發佈)並應該重新加載。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewNeedsReload) name:UIApplicationWillEnterForegroundNotification object:nil]; 

- (void) viewNeedsReload 
{ 
    //Check validity of each image here and reload if necessary 
} 
相關問題