当前位置: 首页 > 面试题库 >

SwiftUI`@ State`关键字有什么作用?

黄弘深
2023-03-14
问题内容

该SwiftUI教程使用@State关键字来表示可变UI状态:

@State var showFavoritesOnly = false

它提供了以下摘要:

状态是一个值或一组值,可以随时间变化,并影响视图的行为,内容或布局。您可以将属性与@State属性一起使用,以将状态添加到视图中。

  • 关键字的确切含义是什么?
  • 变异@State变量如何导致视图重新计算?
  • 其他变量在body吸气剂中如何不变?

问题答案:

@State关键字是@propertyWrapper,最近刚刚在雨燕5.1中引入的功能。如相应提案中所述,它有点像是值包装器,可避免样板代码。

旁注:@propertyWrapper以前称为@propertyDelegate,但此后发生了变化

该官员@state文档具有以下的说:

SwiftUI 管理 您声明为状态的任何属性 的存储当状态值更改时,视图将使其外观无效并重新计算body
。将状态用作给定视图的唯一事实来源。

State实例不是值本身;它不是值本身。 这是读取和修改值的一种方法。要访问状态的基础值,请使用其value属性。

因此,当您初始化标记为的属性时@State,您实际上并不是在创建自己的变量,而是提示在后台SwiftUI创建 “东西”
存储您设置的内容并从现在开始对其进行监视!您@State var只是充当 访问此包装器委托

每次您的@State变量被 写入时SwiftUI就会知道它正在监视它。它也将知道是否@State变量被 读出
Viewbody。使用此信息,它将能够 重新计算View@Statebody对该变量进行更改后已在其变量中引用
任何 变量。



 类似资料:
  • SwiftUI教程使用关键字指示可变UI状态: 它提供了以下总结: 状态是一个值或一组值,可以随时间变化,并影响视图的行为、内容或布局。使用具有@State属性的属性将状态添加到视图。 这个关键词到底是什么意思? 如何改变一个变量导致视图被重新计算? 其他变量如何在getter中不可变?

  • 问题内容: 我正在网上关注Java教程,尝试学习该语言,并且它在使用数组的两种语义之间反弹。 和: 该教程从未真正提到过为什么它会在两者之间来回切换,所以我对该主题进行了一些搜索。我目前的理解是,操作员正在创建“ longs数组”类型的对象。我 不 明白的是为什么我要那个,那有什么后果? 是否存在某些特定于“数组”的方法,除非它是“数组对象”,否则这些方法对数组不起作用? 有什么我 不能 用普通数

  • 问题内容: 怎么办?例如在函数中: 问题答案: 如果使用(或-ea简称)启动程序,则此语句 相当于 如果不使用此选项启动程序,则assert语句将无效。 例如,;在你的问题中发布的,等同于 (如果你启动的是。) Java语言规范assert正式为:14.10。该声明说: 14.10。的声明 的断言是一个含有一个布尔表达式语句。断言是启用还是禁用。如果启用了断言,则断言的执行将导致对布尔表达式进行求

  • 问题内容: 这可能是一个非常琐碎的问题,但是我既无法通过网络搜索引擎也无法在php.net上找到答案。如果您没有时间解释,请直接将我定向到可以阅读的内容。 “ var”关键字在PHP中是什么意思? PHP4和PHP5之间有什么区别吗? 问题答案: 它用于在PHP4中声明类成员变量,不再需要。它将在PHP5中工作,但是从不推荐使用的版本开始,从PHP 5.0.0版本到5.1.2版本都将发出警告。自P

  • 问题内容: python中“ yield”关键字有什么作用? 问题答案: 要了解其作用,你必须了解什么是生成器。并且,在你了解生成器之前,你必须了解。 可迭代 创建列表时,可以一一阅读它的项目。逐一读取其项称为迭代: 是一个可迭代的。当你使用列表推导时,你将创建一个列表,因此是可迭代的: 你可以使用的所有“ for… in…”都是可迭代的;lists,strings,文件… 这些可迭代的方法很方便

  • rank ▲ ✰ vote url 1 2888 2315 4033 url Python中关键字yield有什么作用? yield有什么用? 例如下面这段代码: def node._get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist < s