2010-07-24 32 views
0
- (void)applicationWillTerminate:(UIApplication *)application { 
    NSLog(@"applicationWillTerminate");   //======>1  
} 

- (void)dealloc { 
    NSLog(@"dealloc");       //=======>2 
    [window release]; 
    [super dealloc]; 
} 

爲什麼不是1 & 2 textout msg當我退出此程序調試?......關於applicationWillTerminate

回答

0

當你說「完全與調試」,你是什麼意思?這是標準退出(例如Cmd-Q),還是你在Xcode中點擊停止按鈕?這個方法在你的應用程序委託中嗎?它是否以釋放模式運行?

關於#2,無法保證-dealloc將被調用,並且它是在程序終止時跳過它以加快速度的標準程序(無論如何操作系統將收回所有內存)。除了因爲這個原因釋放內存之外,它不應該做更多的事情。

+0

yes,standerd退出Cmd-Q,在調試模式下不釋放 – user400827 2010-07-24 04:02:17

0

我得到它(由蘋果)

此方法(applicationWillTerminate)當用戶退出應用程序,因爲應用程序簡單地移動到在這種情況下,背景通常是不被調用。但是,在應用程序在後臺運行(未掛起)並且系統因某種原因需要終止應用程序的情況下,可能會調用此方法。

在iOS 4.0及更高版本中,當用戶退出支持後臺執行的應用程序時,將調用此方法,而不是applicationWillTerminate:方法。您應該使用此方法釋放共享資源,保存用戶數據,使計時器無效並存儲足夠的應用程序狀態信息,以便將應用程序恢復到其當前狀態,以防稍後終止。您還應該禁用應用程序用戶界面的更新,並避免使用某些類型的共享系統資源(例如用戶的聯繫人數據庫)。避免在後臺使用OpenGL ES也是必要的。