美文网首页
iOS13生命周期的改动

iOS13生命周期的改动

作者: ios_暗夜行者 | 来源:发表于2020-09-24 17:35 被阅读0次

    不知不觉Xcode就,从xcode 7 升级到xcode12了,突然发现,用最新的Xcode12新建一个项目后,AppDelegate里面的window没了,还多了一些UISceneSession lifecycle,一脸懵逼了,然后在网上查找了资料参考了好几篇大神的文章才发现了变化.

    iOS 13以下生命周期 

    对应到方法就是一些AppDelegate里头的方法以及一些可以注册监听的通知.然而,到了iOS 13这些都失效了.

    以上两幅图都是从其他大神那,参考来的,虽然看不懂,没那么深入了解过,就当是看看了解一下了.看不懂也不要紧,只要知道iOS 13 改变了什么就好,即---原本AppDelegate(UIApplicationDelegate)控制生命周期的行为移交给了SceneDelegate(UIWindowSceneDelegate)如果直接使用最新的Xcode创建一个新的App.我们会发现.Appdelegate.m内代码少了一些生命周期的东西,多了一些其他的代码.并且多了一个SceneDelegate的类

    苹果文档如是说

    In iOS 13 and later, use UISceneDelegate objects to respond to life-cycle events in a scene-based app.

    iOS 13及更高版本,使用SceneDelegate对象在基于场景的应用程序中响应生命周期事件。

    In iOS 12 and earlier, use the UIApplicationDelegate object to respond to life-cycle events.

    在ios 12及更早版本中,使用UIApplicationDelegate对象响应生命周期事件。

    也就是说如果不想使用场景,要用回以前的写window的风格就不在info.plist中添加UIApplicationSceneManifest.或者是Xcode11以上的删除UIApplicationSceneManifest(Application Scene Manifest).以及appdelegate.m中注释掉scene有关的代码.还有,在Appdelegate.h中添加一个window属性

     @property (strong, nonatomic) UIWindow * window;

    然后就走的以前的Appdelegate的那些方法了,用不习惯这个场景这个功能的就可以按以上方法改回以前在Appdelegate 中创建window使用

    补充说明一下,如果不使用iPad的多窗口的话建议大家不要使用场景.

    以上内容中整理的素材图片来源于不同文章的大神参考梳理而来,如有雷同尽情谅解.

    相关文章

      网友评论

          本文标题:iOS13生命周期的改动

          本文链接:https://www.haomeiwen.com/subject/fkhtuktx.html