2013-07-14 38 views
2

這純粹是爲發展宗旨,因爲該設備上可以使用從XCode關閉模擬器時是否有方法運行?

-(void)applicationDidEnterBackground:(UIApplication *)application 

但我往往只是打在XCode中的停止按鈕停止運行模擬器,我需要某種方法來運行的,所以它可以告訴數據庫當前播放器已經停止播放,任何想法該怎麼做?

+1

「不過,我經常只打在Xcode中停止按鈕」 - 將立即終止所有的進程。也許你可以看看['atexit()'](http://pubs.opengroup.org/onlinepubs/009695299/functions/atexit.html),但我不能保證它確實會被調用。 – 2013-07-14 19:17:30

+2

你永遠不應該依賴於applicationDidEnterBackground:做任何重要的事情,因爲你不能確定*該方法會被調用。例如,如果該應用程序崩潰,則該方法根本不會被調用。也許在這種情況下,它確實不是那麼重要,只要意識到這個事實。至於你的問題,我不相信你想要什麼是可能的。退出模擬器實際上就像在實際設備上執行強制關閉一樣。它沒有調用任何方法。 (這就是爲什麼你想不斷爲用戶保存數據的原因) – Josiah

+0

你想在哪裏運行代碼 - 在模擬器或Mac主機上的iOS上運行?如果是後者,你可以寫一個應用程序來觀察模擬器退出。如果前者,你可能會運氣不佳,正如其他答案所述。 –

回答

0

我覺得這個蘋果Q & A將是很有意思:Detecting the Debugger

我發現它中途通過this article

蘋果提供的小功能,以確定調試器是否接在這裏。所以,只要我的應用程序在模擬器啓動時,我會讓它等待:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 

{ 

#if DEBUG 

// Wait max. 10 secs for debugger to attach again: 

double waitTime = 0.0; 
while (AmIBeingDebugged() == NO && waitTime < 15.0) 
{ 
    [NSThread sleepForTimeInterval:0.25]; 
    waitTime += 0.25; 
} 

#endif 
+0

OP似乎更感興趣的是能夠在模擬器退出之前運行一段代碼,而不僅僅是檢測他在模擬器上運行的那段代碼。 – Kitsune

相關問題