iOS开发Swift-16-App的生命周期-AppDelegate和SceneDelegate
AppDelegate:
import UIKit
import CoreData//包含App的部分生命周期函数(钩子函数),也有其余函数(如推送)
@main
class AppDelegate: UIResponder, UIApplicationDelegate {func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {// Override point for customization after application launch.print("App启动")return true}// MARK: UISceneSession Lifecycle//iOS的App只有一个场景(只有一个窗口)func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {// Called when a new scene session is being created.// Use this method to select a configuration to create the new scene with.print("即将创建一个窗口时.在此可配置一个可视窗口")return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)}func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {// Called when the user discards a scene session.// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.// Use this method to release any resources that were specific to the discarded scenes, as they will not return.print("用户关闭了某个窗口")}// MARK: - Core Data stacklazy var persistentContainer: NSPersistentContainer = {/*The persistent container for the application. This implementationcreates and returns a container, having loaded the store for theapplication to it. This property is optional since there are legitimateerror conditions that could cause the creation of the store to fail.*/let container = NSPersistentContainer(name: "Todos")container.loadPersistentStores(completionHandler: { (storeDescription, error) inif let error = error as NSError? {// Replace this implementation with code to handle the error appropriately.// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development./*Typical reasons for an error here include:* The parent directory does not exist, cannot be created, or disallows writing.* The persistent store is not accessible, due to permissions or data protection when the device is locked.* The device is out of space.* The store could not be migrated to the current model version.Check the error message to determine what the actual problem was.*/fatalError("Unresolved error \(error), \(error.userInfo)")}})return container}()// MARK: - Core Data Saving supportfunc saveContext () {let context = persistentContainer.viewContextif context.hasChanges {do {try context.save()} catch {// Replace this implementation with code to handle the error appropriately.// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.let nserror = error as NSErrorfatalError("Unresolved error \(nserror), \(nserror.userInfo)")}}}}
SceneDelegate:
import UIKit//包含App的UI方面的生命周期函数,也有其余函数(如从别的App跳转回来时)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {var window: UIWindow?func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).print("若使用IB,则自动创建可视窗口;若不使用IB,则可在此利用window属性(可视窗口),然后用代码设定App的首页vc")guard let _ = (scene as? UIWindowScene) else { return }}func sceneDidDisconnect(_ scene: UIScene) {// Called as the scene is being released by the system.// This occurs shortly after the scene enters the background, or when its session is discarded.// Release any resources associated with this scene that can be re-created the next time the scene connects.// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).print("窗口/App已经断开连接(1.关闭App时调用,2.退到后台后不久调用)")}//App主要有三种状态:被关闭,在前台,在后台//下面两个方法对应的范围更广,如App关闭时,用户点击推送横幅后打开App,也会调用sceneDidBecomeActive,此时可清楚右上角角标func sceneDidBecomeActive(_ scene: UIScene) {// Called when the scene has moved from an inactive state to an active state.// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.print("窗口/App从非活跃-->活跃(已经被激活)")}func sceneWillResignActive(_ scene: UIScene) {// Called when the scene will move from an active state to an inactive state.// This may occur due to temporary interruptions (ex. an incoming phone call).print("窗口/App从活跃-->非活跃(即将被挂起)")}func sceneWillEnterForeground(_ scene: UIScene) {// Called as the scene transitions from the background to the foreground.// Use this method to undo the changes made on entering the background.print("窗口/App从后台-->前台(即将回到前台)")}func sceneDidEnterBackground(_ scene: UIScene) {// Called as the scene transitions from the foreground to the background.// Use this method to save data, release shared resources, and store enough scene-specific state information// to restore the scene back to its current state.print("窗口/App从前台-->后台(已经进入后台)")// Save changes in the application's managed object context when the application transitions to the background.(UIApplication.shared.delegate as? AppDelegate)?.saveContext()}}
相关文章
- JOSEF约瑟 静态同步检查继电器 JT-1/200 JT-1-2 100V 板前接线 固定安装
JT-1同步检查继电器 系列型号 JT-1同步检查继电器; DT-1同步检查继电器; JT-3同步检查继电器; DT-3同步检查继电器; 一、应用范围 JT-1/200同步检查继电器用于两端供电线路的自动重合闸线路中,以检查线路上电压…...
2023/9/29 12:36:46 - 2.物联网射频识别,RFID通信原理,RFID读写器与标签无线交互方式、数据反馈方式,RFID调制与解调、编码方式,不同RFID标签与读写器
一。RFID无线识别的原理 1.RFID系统无线通信基本原理 如下图所示,左边是读写器(刷卡器),右边是标签(卡),中间通过无线通信方式。 标签:(卡) 读写器ÿ…...
2023/9/29 12:31:29 - 什么是AI客流量算法?如何应用在实际场景中?
客流量分析算法简而言之就是一种利用数据分析和机器学习技术进行人流量统计、预测和分析的算法。它能够根据不同的数据来源,如摄像头、传感器等,对特定区域内的客流量进行实时监测和分析,并通过对历史数据的综合分析,提供客流趋势…...
2023/9/29 12:31:18 - SQL JOIN 时 USING 和 ON 的异同
在数据表做 join 时,即可以用 using,也可以用 on。有什么异同点呢。 ON 是更加普遍的用法,可以连接表 On 一个字段,多个字段,甚至一个条件表达式。举例 SELECT * FROM world.City JOIN world.Country ON (City.Cou…...
2023/9/29 12:29:06 - 【数据结构】排序算法(一)—>插入排序、希尔排序、选择排序、堆排序
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.直接插入排序 2.希尔排序 3.直接选择排…...
2023/9/29 12:24:08 - C++中使用new和delete动态地分配和释放内存
C中使用new和delete动态地分配和释放内存 如果在程序中使用下面这样的数组声明: int myNums[100]; // a static array of 100 integers程序将存在两个问题。 1.这限制了程序的容量,无法存储 100 个以上的数字。 2.如果只需存储 …...
2023/9/29 12:18:14
最新文章
- JOSEF约瑟 静态同步检查继电器 JT-1/200 JT-1-2 100V 板前接线 固定安装
JT-1同步检查继电器 系列型号 JT-1同步检查继电器; DT-1同步检查继电器; JT-3同步检查继电器; DT-3同步检查继电器; 一、应用范围 JT-1/200同步检查继电器用于两端供电线路的自动重合闸线路中,以检查线路上电压…...
2023/9/29 12:36:46 - 2.物联网射频识别,RFID通信原理,RFID读写器与标签无线交互方式、数据反馈方式,RFID调制与解调、编码方式,不同RFID标签与读写器
一。RFID无线识别的原理 1.RFID系统无线通信基本原理 如下图所示,左边是读写器(刷卡器),右边是标签(卡),中间通过无线通信方式。 标签:(卡) 读写器ÿ…...
2023/9/29 12:31:29 - 什么是AI客流量算法?如何应用在实际场景中?
客流量分析算法简而言之就是一种利用数据分析和机器学习技术进行人流量统计、预测和分析的算法。它能够根据不同的数据来源,如摄像头、传感器等,对特定区域内的客流量进行实时监测和分析,并通过对历史数据的综合分析,提供客流趋势…...
2023/9/29 12:31:18 - SQL JOIN 时 USING 和 ON 的异同
在数据表做 join 时,即可以用 using,也可以用 on。有什么异同点呢。 ON 是更加普遍的用法,可以连接表 On 一个字段,多个字段,甚至一个条件表达式。举例 SELECT * FROM world.City JOIN world.Country ON (City.Cou…...
2023/9/29 12:29:06 - 【数据结构】排序算法(一)—>插入排序、希尔排序、选择排序、堆排序
👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.直接插入排序 2.希尔排序 3.直接选择排…...
2023/9/29 12:24:08 - C++中使用new和delete动态地分配和释放内存
C中使用new和delete动态地分配和释放内存 如果在程序中使用下面这样的数组声明: int myNums[100]; // a static array of 100 integers程序将存在两个问题。 1.这限制了程序的容量,无法存储 100 个以上的数字。 2.如果只需存储 …...
2023/9/29 12:18:14 - 国内可使用chatGPT的十三种方式
国内AI 1. 开放猫 Chat机器人https://mirrorchat.extkj.cn/ chat机器人: Chat机器人https://mirrorchat.extkj.cn/ 3.免费学习测试 免费学习测试https://chat.wuguokai.cn/#/chat/1683348236237 4.AI文本工具站 AI文本工具站一个用于提高工作效率的文本工具网站,应用…...
2023/8/14 13:04:36 - 基于ChatGPT3.5 API实现的私有化web程序源码+使用说明,一键部署属于自己定制化的 chatgpt web 程序
chatgpt-web 本项目可以一键部署属于自己定制化的 chatgpt web 程序(兼容gpt3.5), 只需下载release中对应平台的项目文件,修改配置后执行,打开 http://127.0.0.1:8080 ,便可以获得属于自己的chatgpt网站。 参考项目:co…...
2023/8/14 19:59:25 - ChatGPT Plus用户专享:86款高效功能插件,详尽安装与使用全攻略
在前天的文章中,我们介绍了 ChatGPT 开放的全新模式 Web Browsing(网页浏览),启用后 ChatGPT 就可以开始上网,收集最新的互联网资料进行作答。 其他关于chatgpt使用方面:请访问: 链接…...
2023/8/14 10:16:53 - ChatGPT自然语言处理的新里程碑
ChatGPT中文网是一个面向中国用户的聊天机器人网站,旨在为国内用户提供一个自然的环境、有趣、实用的聊天体验。它使用最新的自然语言处理技术来帮助用户更好地理解他们的聊天对话,还可以帮助用户解决日常生活中的问题,提供有趣的谈话内容以及…...
2023/8/15 8:22:45 - 国内版ChatGPT最全使用方法及使用用途技巧汇总
ChatGPT人工智能技术的出现确实会让一些人担心自己的工作会不会被取代。但实际上,人工智能技术只会替代那些可以被程序自动化的重复性、标准化、无脑力的工作,而对于需要人类创意、想象力和复杂思维的工作来说,AI人工智能技术的发展对于人类来…...
2023/8/14 10:55:47 - ChatGPT和Midjourney王炸组合,开启AI新时代
目录 序言 一:使用ChatGPT进行对话 二:调用newbies robot 三:举例说明 四:付费和使用限制 序言 随着人工智能技术的不断发展,越来越多的人开始使用人工智能工具来创作图画。在这里,我将分享如何结合Ch…...
2023/8/15 10:03:43