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

news/2025/2/6 23:57:42/

在这里插入图片描述

概述

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

在这里插入图片描述

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

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

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

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


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

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

在这里插入图片描述

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

在这里插入图片描述

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

下面是具体的代码示例:

swift">@Observable
class Counter {var count = 0
}class CounterObserver {let counter: Counterinit(counter: Counter) {self.counter = counter}func observe(

http://www.ppmy.cn/news/1569934.html

相关文章

【C++】STL——vector底层实现

目录 💕 1.vector三个核心 💕2.begin函数,end函数的实现(简单略讲) 💕3.size函数,capacity函数的实现 (简单略讲) 💕4.reserve函数实现 (细节…

机器学习7-全连接神经网络3-过拟合与超参数

机器学习7-全连接神经网络3-过拟合欠拟合 过拟合应对过拟合-最优方案:获取更多的训练数据应对过拟合-次优方案:正则化应对过拟合-次优方案2:随机失活综合考量 超参数超参数优化方法 过拟合 机器学习的根本问题是优化和泛化的问题。优化——是…

RabbitMQ深度探索:简单实现 MQ

基于多线程队列实现 MQ &#xff1a; 实现类&#xff1a; public class ThreadMQ {private static LinkedBlockingDeque<JSONObject> broker new LinkedBlockingDeque<JSONObject>();public static void main(String[] args) {//创建生产者线程Thread producer n…

Python从0到100(八十七):CNN网络详细介绍及WISDM数据集模型仿真

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

Chromium132 编译指南 - Android 篇(四):配置 depot_tools

1. 引言 在前面的章节中&#xff0c;我们详细介绍了编译 Chromium 132 for Android 所需的系统和硬件要求&#xff0c;以及如何安装和配置基础开发环境和常用工具。完成这些步骤后&#xff0c;接下来需要配置 depot_tools&#xff0c;这是编译 Chromium 的关键工具集。depot_t…

【PromptCoder + Bolt.new】Cascade模式自动生成页面和对应的路由

【PromptCoder Bolt.new】Cascade模式自动生成页面和对应的路由 官网&#xff1a;PromptCoder PromptCoder&#xff1a;智能代码提示词生成 PromptCoder是一款利用人工智能技术的智能代码生成工具。它能够识别设计图或截图&#xff0c;并自动生成与之匹配的前端代码。无论是…

七。自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测

import tensorflow as tf import numpy as np # 自定义数据集类 class CustomDataset(tf.data.Dataset): def __init__(self, x_data, y_data): self.x_data tf.convert_to_tensor(x_data, dtypetf.float32) self.y_data tf.convert_to_tensor(y_data, …

在Vue3 + Vite 项目中使用 Tailwind CSS 4.0

文章目录 首先是我的package.json根据官网步骤VS Code安装插件验证是否引入成功参考资料 首先是我的package.json {"name": "aplumweb","private": true,"version": "0.0.0","type": "module","s…