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

xcode11新增SceneDelegate文件

好久之前跟新到Xcode11,跟新完成后打开以前老项目并未有什么太大变化,也就没有在意,今天新建一个项目,创建完成后,发现多了个SceneDelegate的.m和.h文件,这是什么鬼?它有什么用呢?...新创建项目目录 AppDelegate和SceneDelegate是iPadOS带来的新的多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。...原来在iOS13中,AppDelegate文件结构发生了变化: iOS13以前:AppDelegate处理App生命周期和UI生命周期; iOS13以后:处理 App 生命周期和新的 Scene...Session 生命周期,在AppDelegate.h文件没有了window属性,而是在SceneDelegate中,可见AppDelegate不管理window而是交给SceneDelegate。...管理window的方式适配: 打开info.plist文件,删除Application Scene Manifest选项。

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

iOS经典错误Undefined symbols for architecture XXX:

引用了framework中的两个文件 原因之三:extern引用不存在的全局变量而报错 开发中,我们很有可能用到全局变量,比如在delegate.m文件中定义了一个int 型全局变量globalVar,...在ViewController.m文件中通过extern int globalVar; 而引用A.m文件的这个全局变量。...#import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate int globalVar;...原因:因为extern int globalVariate并没有定义名为globalVariate的变量,而是引用了一个名字叫做globalVariate的全局变量。...原因之四:Compile Sources中没有添加对应的.m文件而报错 有时候,我们项目中并没有以静态库的形式引用第三方库,而是直接使用的三方源码。也有可能出现相同的错误。

12.4K40

一步一步,开始上手Mac 开发(一)

选择模版没有出错并且它能正常工作 2. 一个好的编译开端:尽管这是一个空窗口项目 3....这是因为你并没有将MasterViewController 添加到主窗口(main window),这一步,需要在AppDelegate中进行。...为了使用view Controller, 就要让App Delegate 知道它的存在,因此你需要做第一步就是在AppDelegate.m中导入view controller的头文件 1.10 在AppDelegate.m...这时我们最好编译运行一下项目工程,以确保我们做的这些操作都没什么问题,虽然窗口里table View仍然是空的,这是因为我们并没有把数据模型和UI连接在一起。...AppDelegate.m文件 运行程序,确保上面我们做的设置没有错误。为了能够显示需要的Bug 列表,我们要让table view 从模型中获取数据。

4K40

不给“爸爸”添麻烦 - iTOP iOS 动态库改造

__text表示编译后的程序执行语句,__data表示已初始化的全局变量和局部静态变量,__bss表示未初始化的全局变量和局部静态变量,__cstring表示代码里的字符串常量。...[ 3] -[AppDelegate applicationWillEnterForeground:] 0x100004A18 0x0000004C [ 3] -[AppDelegate...1、 代码级别优化 查找无用selector,以往C++在链接时,没有被用到的类和方法是不会编进可执行文件里。...但 Objctive-C 不同,由于它的动态性,它可以通过类名和方法名获取这个类和方法进行调用,所以编译器会把项目里所有OC源文件编进可执行文件里,哪怕该类和方法没有被使用到。...IMSDK Demo 测试结果,静态库改用动态库后,结论如下 1、IMSDKCoreKit 动态库能和静态库的插件混用,业务可以根据情况自由选择动态库更新; 2、安装包大小会对应增加,因为动态库 SDK 没有编译到应用可执行二进制文件

2.2K90

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

也就说,没有UIWindow,就看不见任何UI界面 1.1 手工创建一个UIWindow - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions...所以需要在AppDelegate.h里面创建一个强引用的属性,定义window。然后赋值。...storyboard中的创建过程 先执行Main函数,执行UIApplicationMain(),根据其第三个和第四个参数创建Application 创建代理,并且把代理设置给application 根据项目配置文件...四大对象之间的关系 1.UIApplication :delegate属性 2.AppDelegate :window属性 3.UIWindow :rootViewController属性 4.UIViewController...:view属性 第一个创建的对象是UIApplication UIApplication绑定一个AppDelegate对象 AppDelegate对象中有一个window属性(UIWindow)

1.7K30

iPadOS上启动黑屏翻车问题分析(二)

上启动黑屏翻车问题分析(一) 昨天我们说了旧的项目在iOS 13下完全启动之后黑屏的问题,然后紧跟问题通过UI图层分析方式一步步的分析基本找到了问题的根源---iPadOS的底层以及操作思路转变啦 单窗口时代...咱们暂且吧单窗口的iOS定义为旧时代,也就是之前的iOS应用默认的情况下基于单一窗口模式开发的(如下图),而作为开发人员也是十分的享受这种内置的开发模版 ?...新的时代--支持多窗口模式 在升级到iOS 13之后系统开始支持多窗口这个尤其是在iPadOS上尤为显著,这样你可以同时的在一个设备屏幕上同时享受到至少两个App的视图内容… AppDelegate....m文件 #import "SceneDelegate.h" #import "LoginViewController.h" @interface SceneDelegate() @end @implementation...AppDelegate app.window = window } }

2K10

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(二)

运行应用,点击状态栏图标显示popover后,用鼠标点击应用窗口外的其他地方,这时你会发现popover会自动隐藏起来了,这样的效果与之前的相比,要更合适操作一些。...活动监视器显示demo运行正常 这是由于我们之前使用的xib文件加载window,系统为我们默认做了一些其他方面的事,比如再加载window之前,创建应用对象,设置应用代理,配置窗口设置等,那系统是在哪里做的这些事情呢...,根本没有调用这个方法,也就是所我们删除了main.storyboard文件后,系统不再自动的为我们设置应用的delegate,需要我们自己手动在main.m中进行设置。...main.m文件实现代码 1.6 因为我们去除了window,因此ViewController对我们来说已经没有价值了,我们只需要把之前在ViewController中写的代码,放置到AppDelegate.m...AppDelegate.m文件 如果你在这中间的步骤没有错误,那么再次运行工程,你会发现状态栏的上图标又出现了,并且我们之前实现的功能也都可以正常响应了^_^ 整个工程的代码,可以从这里下载StatusBarDemoApp

1.4K30

iOS 新创建项目中的SceneDelegate适配

翻译解释: 在iOS 13(及以后版本)上,SceneDelegate将负责AppDelegate的某些功能。 最重要的是,window(窗口)的概念已被scene(场景)的概念所代替。...Info.plist文件中提供了”Application Scene Manifest“配置项,用于配置App的场景,包括它们的场景配置名,delegate类名和storyboard入口 那不需要SceneDelegate...另外一种则是根据系统版本判断兼容 方法一:删除SceneDelegate 把AppDelegate中UISceneSession Lifecycle的两个代理方法删除,添加window属性,在application...:didFinishLaunchingWithOptions:方法中初始化window,设置根视图 删除SceneDelegate文件 选中target,切换到info,删除Application Scene...Manifest这行 /// AppDelegate.Swift import UIKit @main class AppDelegate: UIResponder, UIApplicationDelegate

2.8K21

Xcode工程结构详解

一些用户界面的自定义信息(窗口的位置,顺序,偏好等等)。...在ios开发中,你简单最糟心的项目是什么,肯定有人会说要多糟心有多糟心,曾经我也见到过很糟心的项目,没有采用任何框架,编译都好几分钟的那种。...Dtabase:这个文件夹下主要放的是数据库相关的业务文件; Models: 这个文件夹下主要放的是业务数据实体(数据模型); View:这个文件夹下主要放的是UI窗口组件和UI 公共组件; Config...这个文件夹下主要放的是一些系统常用的工具类,例如:获取时间工具类,文件大小等; Supporting Files :这个文件夹下主要放的是系统生成的文件,比如:AppDelegate文件、info.plist...AppDelegate AppDelegate文件只存放AppDelegate的h和m文件,也可以放入其他跟AppDelegate有关的文件,比如我们写了一个AppDelegate+Router的Category

1.2K30

【IOS开发基础系列】Storyboard专题

与传统的 nib 文件不同,故事板文件有以下优点:     1、通过一个故事板文件,你能对所有的窗口以及它们之间的关系一目了然。...因为所有的窗口设计在一个故事板文件中,你会更容易把握每次改动带给每个窗口的变化。     2、在故事板中可以描述各个窗口之间的转换。这种转换叫做 segue(连接)。...那么,在没有 MainWindow.xib 文件的情况下,故事板是怎样被加载到app中的呢?         ...但现在什么都没有。         秘密都位于 Info.plist 文件。...但我们并没有配置它,因此会有这个警告。         模板 cells 是一种很酷的故事板特性。它远胜于原来的nib 文件

88630

iOS开发--UIWindow与程序启动原理与两种创建控制器的方法

创建窗口 2.加载main.storyboard,并且加载main.storyboard指定的控制器 3.把新创建的控制器,作为窗口的根控制器,让窗口显示出来 1、手动创建窗口步骤 1.自己加载程序启动...在 AppDelegate ?...Paste_Image.png 举例:如果需要看到键盘,必须把键盘添加到一个View上面去 首先了解什么是窗口:键盘、状态栏是窗口 窗口层级关系: // 窗口是有层级关系 // UIWindowLevelNormal...Paste_Image.png 3、控制器的创建(Xid) /* 通过xib创建控制器的view 1.一定要描述xib的文件拥有者是控制器,也就是说这个xib是用来描述控制器 */ 1.通过File...Paste_Image.png 在AppDelegate中加载: ? Paste_Image.png 这里创建出来是箭头指向的控制器的View ?

1.1K20
领券