我可以在 Swift UI 结构中拥有的状态变量的最大数量是多少?性能会随着变量的增加而降低吗?
What is the maximum number of state variables I can have in a Swift UI Struct and will the performance slow down with increase in variables?
我在 Swift UI 结构中最多可以拥有多少个状态变量?
struct Example: View {
@State var first : Bool = true
@State var second: Double = 94.4
@State var third: CGFloat = 45.45
.
.
.
How many maximum ?
var body: some View {
Text("Hello ")
}
}
另外,有很多状态变量实际上会降低应用程序的速度吗?我需要清楚地了解这件事的可扩展性,因为我是声明式编程的新手:P
只是为了让您开始回答,
- 很难相信会有任何性能问题。 "Declarative programming" 实际上并不存在。它只是一个编译器/运行时/任何做一些检查的东西。与管道中的其他结构没有真正实质性的范式差异。
如果,难以置信,你在做真正的性能编程,也许是科学的或游戏之类的,你在一百万年内永远不会参与这样的事情,所以它没有相关性。
此外,在您的 phone 上与 UI 相关的任何事情都毫无价值,使用了惊人的处理能力。渲染 任何一个文本字符! 恰好在当时出现在屏幕上,是样条曲线抖动、blitting 等的惊人舞蹈。 Issue例如 "checking done by the runtime system" 真的无关紧要,除非在非常不寻常的情况下。
总结:不考虑在这个环境下的表现。
- 你能有多少个?如果你粘贴几千,它工作正常。很难相信有任何限制。
总结:您可能会想到像“30”这样的限制。 没有这样的限制。
(可能有一些技术上的、神秘的限制——比如 6400 万——但这与你正在做的事情完全无关!)
管理总结:放松和享受,这些都不是问题。
有关特定案例的更多信息
I am trying to animate, i am using withAnimation to display percentage progress in a ring
对于所描述的状态变量的数量(例如,少于 100,000 - 您使用的是大约“20”),检查的额外开销是完全无关紧要的。它太低了,你无法测量它。
待定,这可能不是最优雅的方法,但是,关于提出的特定性能问题,这绝对是一个非问题。享受吧!
不确定这是否是一个错误,但我已经达到了 SwiftUI 的限制,一个应用程序在 1 个屏幕上有 85 个 @State 变量。此外,我在组内的组内有很多堆叠组。我正处于这样的阶段,如果我添加任何 1 行代码,编译器会抱怨我正在写的不是视图。
因此存在一个限制,具体取决于您的计算机编译视图的速度。
编译器有一定的时间允许尝试编译,直到它突然停止。
我遇到了同样的问题,当我尝试再添加一个状态时,它无法编译:
(372, 10) The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
但是当删除任何状态并使用新状态时,它会起作用。所以它肯定有限制!另一个问题是如何解决。
我在 Swift UI 结构中最多可以拥有多少个状态变量?
struct Example: View {
@State var first : Bool = true
@State var second: Double = 94.4
@State var third: CGFloat = 45.45
.
.
.
How many maximum ?
var body: some View {
Text("Hello ")
}
}
另外,有很多状态变量实际上会降低应用程序的速度吗?我需要清楚地了解这件事的可扩展性,因为我是声明式编程的新手:P
只是为了让您开始回答,
- 很难相信会有任何性能问题。 "Declarative programming" 实际上并不存在。它只是一个编译器/运行时/任何做一些检查的东西。与管道中的其他结构没有真正实质性的范式差异。
如果,难以置信,你在做真正的性能编程,也许是科学的或游戏之类的,你在一百万年内永远不会参与这样的事情,所以它没有相关性。
此外,在您的 phone 上与 UI 相关的任何事情都毫无价值,使用了惊人的处理能力。渲染 任何一个文本字符! 恰好在当时出现在屏幕上,是样条曲线抖动、blitting 等的惊人舞蹈。 Issue例如 "checking done by the runtime system" 真的无关紧要,除非在非常不寻常的情况下。
总结:不考虑在这个环境下的表现。
- 你能有多少个?如果你粘贴几千,它工作正常。很难相信有任何限制。
总结:您可能会想到像“30”这样的限制。 没有这样的限制。
(可能有一些技术上的、神秘的限制——比如 6400 万——但这与你正在做的事情完全无关!)
管理总结:放松和享受,这些都不是问题。
有关特定案例的更多信息
I am trying to animate, i am using withAnimation to display percentage progress in a ring
对于所描述的状态变量的数量(例如,少于 100,000 - 您使用的是大约“20”),检查的额外开销是完全无关紧要的。它太低了,你无法测量它。
待定,这可能不是最优雅的方法,但是,关于提出的特定性能问题,这绝对是一个非问题。享受吧!
不确定这是否是一个错误,但我已经达到了 SwiftUI 的限制,一个应用程序在 1 个屏幕上有 85 个 @State 变量。此外,我在组内的组内有很多堆叠组。我正处于这样的阶段,如果我添加任何 1 行代码,编译器会抱怨我正在写的不是视图。
因此存在一个限制,具体取决于您的计算机编译视图的速度。 编译器有一定的时间允许尝试编译,直到它突然停止。
我遇到了同样的问题,当我尝试再添加一个状态时,它无法编译:
(372, 10) The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
但是当删除任何状态并使用新状态时,它会起作用。所以它肯定有限制!另一个问题是如何解决。