Swift UI结构中状态变量的最大数量是多少?随着变量的增加,性能会下降吗



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

只需开始回答,

  1. 很难相信存在任何性能问题。"声明式编程"实际上并不存在。它只是一个编译器/运行时/做一些检查的任何东西。与管道中的其他结构没有真正的实质性、范式差异

如果令人难以置信的是,你在做真正的性能编程,也许是科学的,或者是为了游戏之类的,那么你在一百万年内永远不会参与这样的事情,所以这毫无意义。

此外,任何与手机UI相关的东西都需要惊人的处理能力,这毫无价值。渲染任何一个文本字符当时恰好出现在屏幕上,这是一场令人惊叹的样条曲线抖动、闪电战等舞蹈。"运行时系统进行检查"之类的问题实际上无关紧要,除非在极不寻常的情况下。

总结:不要考虑在这种环境下的性能。

  1. 你能有多少?如果你粘贴几千,效果很好。很难相信有任何限制

总结:你可能想到了"30"这样的极限。没有这样的限制。

(可能会有一些技术性的、神秘的限制,比如6400万,但这与你正在做的事情完全无关!(


管理总结:放松和享受,这些都不是问题。


有关特定情况的更多信息

我正在尝试动画,我正在使用withAnimation来显示环形中的进度百分比

对于所描述的状态变量的数量(例如,任何小于100000的变量——您使用的大约是"20"(,检查的额外开销是完全无关的。它太低了,你无法测量。

TBC这可能不是最优雅的方式,但对于所问的特定性能问题来说,这绝对是一个无关的问题。享受

不确定这是否是一个错误,但我已经达到了SwiftUI的极限,因为我的应用程序在一个屏幕上有85个@State变量。此外,我有很多叠在一起的小组。我正处于这样一个阶段,如果我添加任何一行代码,编译器都会抱怨我所写的不是View。

因此,根据您的计算机编译视图的速度有一个限制。编译器有一段时间可以尝试编译,直到它突然停止。

我遇到了同样的问题,当我试图再放入一个状态时,它没有编译:

(372, 10) The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions

但是当移除任何状态并使用新状态时,它是有效的。所以它肯定是有极限的!!!另一个问题是如何解决

最新更新