2017-08-07 57 views
0

我正在尋找一個像android中的onDestroy()那樣的swift方法。我希望不要在按下home按鈕時調用它,只應在應用程序完全退出時調用它。我嘗試使用deinit方法,但它從未被調用過。onDestroy()相當於IOS

回答

0

在iOS環境中合適的等價物是applicationWillTerminate(_:),其內部爲AppDelegate

請記住,異步操作無法正確執行

+0

我不認爲applicationDidFinishLaunching是正確的方法。我想要一個在應用程序關閉時調用的方法(如用戶雙擊home按鈕然後向上滑動) – cvrattos

+0

檢查我編輯的答案。 – the4kman

0

如果用戶按下主頁按鈕並轉到手機屏幕菜單,則該應用程序處於後臺狀態。這個函數將被調用:

optional func applicationDidEnterBackground(_ application: UIApplication) 

如果用戶通過按兩下Home按鍵和刷卡應用了終止應用程序,或由具有在bacground應用超過3分鐘,然後這個方法會被調用:

optional func applicationWillTerminate(_ application: UIApplication) 

這兩個函數都已經存在於你的AppDelegate類中。

希望這會有所幫助!

+0

我試過applicationWillTerminate方法,但是當我試圖運行它時,我得到這個錯誤:'可選'只能應用於協議成員 – cvrattos

+0

你的意思是當你終止xcode時會拋出一個錯誤?你可以在這個方法裏面打印(「測試」)並在其上放置一個斷點嗎?看到它達到它? –

+0

對不起,我的意思是我把你的代碼粘貼到我的編輯器中,模擬器甚至不會運行。構建失敗。 – cvrattos

0

iOS等效不存在。 您可以使用

optional func applicationWillResignActive(_ application: UIApplication) 

它被稱爲該應用程序已離開前臺狀態。

optional func applicationWillTerminate(_ application: UIApplication) 

這一個一個被稱爲只有當應用程序正在運行,即在大多數情況下,它不會被當應用程序在後臺調用,除非有特殊的權限。

deinit在應用程序終止時不會被調用,因爲它的目的是在對象被銷燬以釋放內存時執行。當應用程序被終止時,整個過程在其內存堆棧中被銷燬,所以釋放內存毫無意義。

0

曾經有iOS中一個viewDidUnload方法,但由於iOS的6 另一種選擇,它已經過時了,因爲很多人都在提applicationWillTerminate,你也許可以註冊爲UIApplicationWillTerminate通知,其關聯到一個功能,做無論你想在這個功能,如清理等。