gpt4 book ai didi

swiftui - @Environment 与 @EnvironmentObject

转载 作者:行者123 更新时间:2023-12-03 13:43:26 47 4
gpt4 key购买 nike

SwiftUI 中的@Environment 和@EnvironmentObject 有什么区别?

从我从文档中找到的内容来看,@Environment 似乎是用于像 ColorScheme 这样的全局依赖项。但我找不到它们之间的任何精确区别。例如,它们可以互换使用吗?

最佳答案

这是我为自己准备的笔记。可能有用,
@环境对象

  • 它类似于 @ObservedObject
  • 模型应符合 ObservableObject 协议(protocol)
  • 我们需要将此模型中的属性标记为@Published通知更改以查看哪些积极使用对象
  • 模型对象肯定应该是类
  • 不需要默认值,因为它可以从环境中读取默认值。如果对象在环境中不可用,应用程序将崩溃 .
  • 另一个主要区别是,假设我们有 5 个 View (V1…V5),如果我们想将一个对象直接从 V1 传递到 V5,我们可以使用 @EnvironmentObject而不是 @ObservedObject .设置要在 V1 中传递的数据并在 V5(或任何需要的地方)中检索它。代码将非常简单。
  • 它将在同一时间环境中仅保存一种类型的实例。
  • 它纯粹基于观点。如果父 View 设置环境对象,则其所有 subview 都可以使用它。如果另一个父 View 设置了另一个 env 对象,他们的 subview 可以让我们使用它。例如:如果您在 SceneDelegate 的 ContentView 中设置环境对象,则其所有 subview 都可以使用它。

  • @环境
  • 我们可以使用它来获取与系统相关的值,例如应用程序是在亮模式还是暗模式下运行、核心数据的托管对象上下文、大小类等...
  • 我们需要提供正确的键来访问它的值,因为它对多个键拥有相同的数据类型。

  • 谢谢!👨🏻‍💻

    关于swiftui - @Environment 与 @EnvironmentObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58061910/

    47 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com