【发布时间】:2021-05-15 17:41:32
【问题描述】:
当我使用 some View 类型定义 SwiftUI 视图时,我遇到了 Global buffer overflow 崩溃。当我使用确切的类型时,崩溃就消失了。
这会崩溃:let txt: some View = Text("Hi")
这可行:let txt: Text = Text("Hi")
有什么想法吗?提前致谢。
【问题讨论】:
-
尝试用
some View命名它的用例是什么? ` -
我有一个应用程序,其中包含一些多次使用的自定义按钮、文本、图像等。我很简单地将这些元素定义在一个单独的文件中,它就在这个文件中发生崩溃的地方。如果我创建一个只有
import SwiftUI和let txt: some View = Text("Hi")的文件,当我尝试在其他地方使用txt时它会崩溃。 -
但为什么将其定义为
some View而不仅仅是Text? -
因为我需要定义更复杂的可重用组件,其中用于自定义组件的方法返回
some View而不是实际的具体类型。例如,let txt: Text = Text("Hi").frame(width: 20, height: 20, alignment: .center)无法编译,因为 frame 的返回类型为some View。 -
是的,我想它可能是这样的。对我来说,这听起来像是在与编译器作斗争。将发布一个可能的解决方案