UIApplicationDelegate 中两个值得注意的地方

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

官方已经写清注释,应该在 applicationDidEnterBackground:
来进行数据的保护性存储,但是考虑一种特殊情况:直接连按 home 键,然后上划杀死 app,这个方法还会调用吗?

State changes in an iOS app

State changes in an iOS app

答案是会的,应用从 active 状态至 suspended 状态,是必须经过 background 状态的,我们应该按照官方规范,在 applicationDidEnterBackground:
方法而不是在可能被调用更多次的 applicationWillResignActive:
方法里面进行数据的保护性存储。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容