news 2026/4/18 3:15:19

swift中使用ObservableObject单利模式的时候,用let 或 @ObservedObject 或 @StateObject 有什么区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
swift中使用ObservableObject单利模式的时候,用let 或 @ObservedObject 或 @StateObject 有什么区别

使用let(简单引用)

struct ContentView: View { let gameManager = GameManager.shared var body: some View { Text(gameManager.gameState.rawValue) // ❌ 不会自动更新! } }

问题:

获取的是单例的引用

但 不会触发视图更新 当 @Published 属性变化时

SwiftUI 不知道这个对象是 ObservableObject

使用@ObservedObject

struct ParentView: View { @StateObject private var manager = GameManager.shared var body: some View { ChildView(gameManager: manager) // 作为参数传递 } } struct ChildView: View { @ObservedObject var gameManager: GameManager // 从父视图接收 var body: some View { Text(gameManager.gameState.rawValue) } }

特点:

✅ 会触发视图更新 当 @Published 属性变化时

❌ 可能被重新创建 如果父视图重建

适用于:从父视图传递下来的 ObservableObject

使用@StateObject(推荐用于单例)

struct ContentView: View { @StateObject private var gameManager = GameManager.shared var body: some View { Text(gameManager.gameState.rawValue) // ✅ 会自动更新 } }

特点:

✅ 会触发视图更新

✅ 不会被意外重新创建 - SwiftUI 会保持同一个实例

✅ 生命周期与视图相同 - 但因为是单例,所以实际是全局的

最适合单例场景

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 2:57:54

Android学Dart学习笔记第十三节 注解

序言 是的没错,dart中也有注解,而且和java很像 比如这个Deprecated、override 都是非常熟悉的注解。 但是我们依然要过一下,目的不是深入了解dart中每个注解的实际使用场景,而是一种泛的了解。 文档描述 注解又叫MetadataUse meta…

作者头像 李华
网站建设 2026/4/17 18:59:56

基于springboot的水果购物管理系统的设计与实现

由于互联网技术不断进步,网络不断来到人们的身边,很多信息将会对我们的社会产生影响。生活中普遍存在的企业经营管理等方面逐渐变得有序化以及网络化。传统手工作业逐渐被现代工具所取代,网上购物系统越来越广泛。加上我国是水果种植面积和产…

作者头像 李华
网站建设 2026/4/18 3:17:27

Excel中Lookup函数实现临界点归入下一个等级的方法

Excel中经常会遇到根据得分得到相应的评级的问题&#xff0c;例如&#xff1a;0≤得分<30为智障&#xff0c;30≤得分<60为轻障&#xff0c;60≤得分<70为不合格&#xff0c;70≤得分<80为勉强合格&#xff0c;80≤得分<90为合格&#xff0c;90≤得分<100为优…

作者头像 李华
网站建设 2026/4/18 3:19:03

49、dhcpd 参考指南

dhcpd 参考指南 1. 简介 本文将详细介绍 dhcpd 命令及其配置文件 dhcpd.conf 的语法,它是 Internet Software Consortium (ISC) 动态主机配置协议 (DHCP) 服务器 ISC dhcpd 的参考资料。需要注意的是,dhcpd 仍在开发中,相关信息基于 Beta Release 5 Patch Level 16,软件后…

作者头像 李华
网站建设 2026/4/18 3:13:03

25、数据整理、可视化与关系型数据库入门

数据整理、可视化与关系型数据库入门 1. 数据整理与可视化练习 在数据整理和可视化方面,有几个有趣的练习可以帮助我们提升相关技能。 1.1 鸣禽的生活史 Martin(2015)对温带和热带环境中的鸣禽进行了研究。他发现,在面临较高巢穴捕食风险的物种中,其峰值生长率更高;而…

作者头像 李华
网站建设 2026/4/18 2:18:32

数据结构(树)

一、树的种类二、二叉排序树三、平衡二叉树四、红黑树1.每个节点不是黑色就是红色2.根节点永远都是黑色的3.叶子结点都是黑色的4.如果一个节点的颜色是红色的&#xff0c;那么他的子节点的颜色一定是黑色的5.从根节点出发到任意一个叶子结点&#xff0c;走过的路径上的黑色节点…

作者头像 李华