首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS13 Scene Delegate

application(_:didDiscardSceneSessions:) : 在分屏中关闭其中一个或多个scene时候回调用,可以在该函数中销毁场景所使用的资源。...三、SceneDelegate适配 从iOS13开始AppDelegate不再有window属性,window属性被定义在SceneDelegate中。...在保留Application Scene Manifest配置项不予删除时(其中,项目是否支持多窗口功能是个可勾选项),AppDelegate的生命周期方法不再起作用,需要在SceneDelegate中使用...使用此方法可以有选择地配置UIWindow窗口并将其附加到提供的UIWindowScene场景。 如果使用storyboard,则window属性将自动初始化并附加到场景中。...App仍然使用UIWindow对象,但现在它们已成为scene(场景)的一部分。 在if let代码块中,使用scene来初始化UIWindow对象。

5.6K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS 新创建项目中的SceneDelegate适配

    翻译解释: 在iOS 13(及以后版本)上,SceneDelegate将负责AppDelegate的某些功能。 最重要的是,window(窗口)的概念已被scene(场景)的概念所代替。...Xcode 11新创建的项目涉及到SceneDelegate的地方如下: AppDelegate类中两个“scene sessions”方法:application(:configurationForConnecting...另外一种则是根据系统版本判断兼容 方法一:删除SceneDelegate 把AppDelegate中UISceneSession Lifecycle的两个代理方法删除,添加window属性,在application...:didFinishLaunchingWithOptions:方法中初始化window,设置根视图 删除SceneDelegate文件 选中target,切换到info,删除Application Scene...中,然后声明@avaiable(iOS 13, *), AppDelegate的启动方法中也需要修改,编译即可 // SceneDelegate.swift import UIKit @available

    3.3K21

    xcode11新增SceneDelegate文件

    新创建项目目录 AppDelegate和SceneDelegate是iPadOS带来的新的多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。...原来在iOS13中,AppDelegate的文件结构发生了变化: iOS13以前:AppDelegate处理App生命周期和UI生命周期; iOS13以后:处理 App 生命周期和新的 Scene...Session 生命周期,在AppDelegate.h文件中没有了window属性,而是在SceneDelegate中,可见AppDelegate不管理window而是交给SceneDelegate。...method to release any resources that were specific to the discarded scenes, as they will not return. } 3.在AppDelegate...1.SceneDelegate中添加@available(iOS 13, *); 2.AppDelegate中同样声明window属性,代码: - (BOOL)application:(UIApplication

    1.9K21

    SwiftUI-开发iOS项目

    项目文件.png AppDelegate.swift — 它负责App的启动与终止,并负责与SceneDelegate交接。...,它的 scene(_:willConnectTo:options:)将会被调用,设置window的根视图控制器 在初始化根视图控制器时会初始化ContentView中的View,显示出来 ContentView...在SceneDelegate.swift中会看到这样的代码: //创建window let window = UIWindow(windowScene: windowScene) //设置window的...window的rootViewController时,初始化了ContentView,UI 界面就可以显示出来 这段代码应该很熟悉,在UIKit纯代码构建 iOS 程序中,会经常在 AppDelegate...ViewController 使用代码或者利用 StoryBoard、XIB来完成的布局界面的事情,现在一个继承自 View 的结构体搞定 在ContentView内部,有一个 body ,返回一个

    4.7K10

    iOS性能优化之启动优化

    虽然每一页数据加载到内存的速度很快,毫秒级别,但在应用冷启动时,可能会出现大量的缺页中断,对启动速度带来一定的时间消耗 使用测试项目,查看应用在启动过程中,Page Fault所带来的消耗 在Xcode...文件,按固定格式,将启动时需要的方法/函数顺序排列,然后在Xcode中使用.order文件即可。...[AppDelegate load] _main 复制代码 让Xcode使用.order文件,在Build Setting→Order File中配置 编译项目,打开LinkMap文件 # Symbols...window] -[SceneDelegate setWindow:] -[SceneDelegate window] -[AppDelegate application:didFinishLaunchingWithOptions...→Write Link Map File,设置为YES\ 编译项目,打开LinkMap文件\ 配置生效,二进制重排成功\ 5.6.5 swift的函数符号 在Other C Flags中的配置,仅对

    1.9K11

    iOS开发·UIWindow与视图层级调整技巧(makeKeyWindow,resignKeyWindow,makeKeyAndVisible,keyWindow,windowLevel,UIWind

    如何查看App的UIWindow层级 一. 为App初始化一个默认UIWindow对象 在AppDelegate.m中需要初始化一个window属性,作为后面往App添加视图的容器 1....如果想显示一个UIWindow,同时设置为keyWindow,并将其显示在同一windowLevel的其它任何UIWindow之上 - (void)makeKeyAndVisible PS: 上述方法真的会将其显示在同一...获取AppDelegate单例的window属性 专门获取AppDelegate.m文件中的window属性,不包含其它其定义的window [[[UIApplication sharedApplication...调试打印例子 启动APP,AppDelegate.m中的window属性 (lldb) po self.window UIWindow: 0x15fd24390; frame = (0 0; 320...也可专门查看AppDelegate.m中的window属性:假设UIWindow *delegateWindow = [[[UIApplication sharedApplication] delegate

    8K10

    iOS四大对象之UIWindow及四大对象之间的关系1. UIWindow使用纯代码加载根控制器2. UIWindow的创建过程3. 四大对象之间的关系

    UIWindow/使用纯代码加载根控制器 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow -iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的...UIWindow的创建过程 2.1 在有storyboard中的创建过程 先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application 创建代理,并且把代理设置给...5.4.2 在纯代码中的创建过程 先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application 创建代理,并且把代理设置给application 开启一个事件循环...在该方法中,创建一个Window 然后创建一个控制器,并把该控制器设置为UIWindow的根控制器 接下来再将window显示出来,即看到了运行后显示的界面。 3....:view属性 第一个创建的对象是UIApplication UIApplication绑定一个AppDelegate对象 AppDelegate对象中有一个window属性(UIWindow)

    1.8K30

    Clang代码覆盖率检测(插桩技术)

    直接运行代码,控制台输出如下: INIT Count: 14 main -[AppDelegate application:didFinishLaunchingWithOptions:] -[SceneDelegate...你可能看到有许多重复的符号,这是由于trace-pc-guard设定的,其会对源码中任意的代码块开始执行时进行插桩函数回调,包括if判断,while循环以及Block调用等,例如你可以尝试在ViewController.m...文件的viewDidLoad方法中添加一些代码,如下: - (void)viewDidLoad { [super viewDidLoad]; printf("开始Block=======...==================\n"); if (n < 10) { n++; } } 运行项目,输出效果如下: INIT Count: 18 main -[AppDelegate...通常我们在做二进制重排时,更关注的是函数的调用顺序,使用func等级即可,编译设置如下: -fsanitize-coverage=trace-pc,func 专注技术,热爱生活,交流技术,也做朋友。

    1.7K50
    领券