当前位置: 首页 > article >正文

Swift 进阶:Observation 框架中可观察(@Observable)对象的高级操作(上)

在这里插入图片描述

概述

在 WWDC 24 中苹果推出了全新的 Observation 框架,借助于它我们可以更加细粒度的监听可观察(@Observable)对象 。同时,SwiftUI 自身也与时偕行开始全面支持 @Observable 对象的“嵌入”。

在这里插入图片描述

然而在这里,我们却另辟蹊径来介绍 @Observable 对象另外一些“鲜为人知”的故事。

在本篇博文中,您将学到如下内容:

  • 概述
  • 1. “独立自主”的 @Observable 对象
  • 2. 如何用 withObservationTracking 监听属性的 didSet 事件?
  • 3. 重构之后
  • 总结

相信学完本课后,小伙伴们一定会对“自立自强”的可观察对象的使用更加游刃有余、运用自如。

那还等什么呢?Let’s go!!!😉


1. “独立自主”的 @Observable 对象

Observation 框架是一个专注于观察我们活力四射、变化莫测 App 中所有可观察对象的。它在 iOS 17(macOS 14)中被引入,正好对应着 SwiftUI 5.0。

在这里插入图片描述

大家都知道,借助 SwiftUI,Observation 可以发挥出难以置信的巨大威力。不过除了和 SwiftUI “形影不离”以外,我们还可以让它雏鹰展翅独当一面。这是通过利用 withObservationTracking 方法做到的:

在这里插入图片描述

简单来说,@Observable 宏构建的可观察对象可以与 withObservationTracking 方法“琴瑟和鸣”:withObservationTracking 方法允许我们在闭包中跟踪可观察对象上所访问的属性。如果我们尝试访问的任何属性发生了变化,则该闭包将会被调用。

下面是具体的代码示例:

@Observable
class Counter {
   
  var count = 0
}

class CounterObserver {
   
  let counter: Counter

  init(counter: Counter) {
   
    self.counter = counter
  }

  func observe(

http://www.kler.cn/a/533049.html

相关文章:

  • Mac M1 Comfyui 使用MMAudio遇到的问题解决?
  • 深度求索DeepSeek横空出世
  • Unity游戏(Assault空对地打击)开发(6) 鼠标光标的隐藏
  • 渗透测试之文件包含漏洞 超详细的文件包含漏洞文章
  • Vue.js组件开发-实现图片浮动效果
  • modbus协议处理
  • 路由器考研讲解
  • 34.Word:公积金管理中心文员小谢【35】
  • 九. Redis 持久化-AOF(详细讲解说明,一个配置一个说明分析,步步讲解到位 2)
  • 4.增强输入与玩家视角
  • 2.攻防世界PHP2及知识点
  • Nginx的配置文件 conf/nginx.conf /etc/nginx/nginx.conf 笔记250203
  • Vue3 完整学习笔记 - 第四部分
  • TCP 丢包恢复策略:代价权衡与优化迷局
  • LeetCode:583.两个字符串的删除操作
  • [leetcode·回溯算法]回溯算法解题套路框架
  • Kubernetes学习之网络
  • Github 2025-02-04 Python开源项目日报 Top10
  • Rust语言的并发编程
  • 青少年编程与数学 02-008 Pyhon语言编程基础 18课题、标准模块
  • 详解u3d之AssetBundle
  • CCF-GESP 等级考试 2023年12月认证C++八级真题解析
  • 2.7学习记录
  • 基于python的体育新闻数据可视化及分析
  • 6. k8s二进制集群之各节点部署
  • 神经网络常见激活函数 1-sigmoid函数