UIApplicationDelegate 中兩個值得注意的地方

01 - app 的第一個執行代碼的機會是什麼

新建工程的時候,Xcode 默認建立的 AppDelegate 文件裏面會有 UIApplicationDelegate 的 6 個代理方法,其中第一個是 application:didFinishLaunchingWithOptions:,咱們一般會在這裏進行 SDK 的初始化以及其餘一些配置等等,可是 app 的第一個執行代碼的機會實際上是 application:willFinishLaunchingWithOptions:,官方註解是:html

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

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


02 - 應該在哪一個回調裏面存儲數據

applicationDidEnterBackground
applicationDidEnterBackground

官方已經寫清註釋,應該在 applicationDidEnterBackground: 來進行數據的保護性存儲,可是考慮一種特殊狀況: 直接連按 home 鍵,而後上劃殺死 app,這個方法還會調用嗎?

State changes in an iOS app
State changes in an iOS app

答案是會的,應用從 active 狀態至 suspended 狀態,是必須通過 background 狀態的,咱們應該按照官方規範,在 applicationDidEnterBackground: 方法而不是在可能被調用更屢次的 applicationWillResignActive: 方法裏面進行數據的保護性存儲。app


參考連接:developer.apple.com/library/con…ide

相關文章
相關標籤/搜索