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:
來進行資料的保護性儲存,但是考慮一種特殊情況:直接連按 home 鍵,然後上劃殺死 app,這個方法還會呼叫嗎?
答案是會的,應用從 active 狀態至 suspended 狀態,是必須經過 background 狀態的,我們應該按照官方規範,在 applicationDidEnterBackground:
方法而不是在可能被呼叫更多次的 applicationWillResignActive:
方法裡面進行資料的保護性儲存。