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:
方法里面进行数据的保护性存储。