2010-02-19 81 views
3

我有一個iPhone應用程序,它會在用戶完成特定操作後自行退出。我目前使用exit(0)離開應用程序,直到最近我都沒有遇到麻煩。我明白,這不是退出應用程序的「正確」方式,但它是我想要做的事情。我遇到的問題是當設備從休眠狀態喚醒時,我的應用程序作爲活動應用程序,exit(0)被調用並且應用程序在退出後重新啓動。如何以編程方式退出iPhone應用程序?

這讓我覺得很奇怪,想知道這是一個錯誤還是我做錯了什麼?有沒有更好的方式來優雅地退出應用程序,而無需用戶擊中主鍵?

感謝

+0

你在哪裏調用exit()函數?可能是設備從休眠狀態喚醒時調用的代碼... – Vladimir 2010-02-19 14:50:50

+0

我在處理應用程序退出的應用程序委託中有一個方法。在此方法中,applicationWillTerminate在退出(0)之前被調用。調試時,我退出(0),然後重新啓動。 – Wallace 2010-02-19 14:55:52

+2

我不明白你想要做什麼。你爲什麼強行終止該應用程序? 爲了回答你關於優雅地終止應用程序的問題,不,沒有辦法做到這一點,因爲它不是iPhone上任何應用程序的預期行爲。 – Jasarien 2010-02-19 16:50:58

回答

3

蘋果的方法是提醒用戶應用程序已完成,並且他們必須單擊home以退出。你不應該在你的代碼中這樣做。如果很明顯您的應用退出審閱者,那麼它很可能不會被批准。

0

這裏有一個鏈接,可有你回答:link text

但它不存在公共API以編程方式終止您的iPhone應用程序。 (請參閱iPhone開發中心的Technical Q&A QA1561

-1
//@step invoke the normal routine applicationWillTerminate 
if ([[UIApplication sharedApplication].delegate respondsToSelector:@selector(applicationWillTerminate:)]) 
{ 
    [[UIApplication sharedApplication].delegate performSelector:@selector(applicationWillTerminate:) withObject:[UIApplication sharedApplication]]; 
} 
//@step force quite app 
kill(getpid(), SIGINT); 

我認爲這是沒有使用私有API ....

0

我看到了同樣的問題。我可以通過調用exit(1)來阻止它。

1

您可以使用此命令私用動畫來退出你的應用程序(您添加在你的Info.plist的UIApplicationExistsOnSuspend鍵後):

[[UIApplication sharedApplication] suspend]; 

但是,如果你想要把它你的應用程序將會被拒絕在App Store

相關問題