【iOS開發】UIApplicationDelegate中兩個值得注意的地方

KyXu發表於2017-11-01

01 – app 的第一個執行程式碼的機會是什麼

新建工程的時候,Xcode 預設建立的 AppDelegate 檔案裡面會有 UIApplicationDelegate 的 6 個代理方法,其中第一個是 application:didFinishLaunchingWithOptions:,我們通常會在這裡進行 SDK 的初始化以及其他一些配置等等,但是 app 的第一個執行程式碼的機會其實是 application:willFinishLaunchingWithOptions:,官方註解是:

This method is your app’s first chance to execute code at launch time.

這個知識點可以用於面試,以及對於一些對初始化時機有要求的 SDK 配置的 bug 排查。


02 – 應該在哪個回撥裡面儲存資料

applicationDidEnterBackground

官方已經寫清註釋,應該在 applicationDidEnterBackground: 來進行資料的保護性儲存,但是考慮一種特殊情況:直接連按 home 鍵,然後上劃殺死 app,這個方法還會呼叫嗎?

State changes in an iOS app

答案是會的,應用從 active 狀態至 suspended 狀態,是必須經過 background 狀態的,我們應該按照官方規範,在 applicationDidEnterBackground: 方法而不是在可能被呼叫更多次的 applicationWillResignActive: 方法裡面進行資料的保護性儲存。


參考連結:https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html


相關文章