一个类可以是 SwiftUI 中的一个视图吗?

geo*_*gij 6 swiftui

我可以定义类似的东西

struct SimpleView: View { ...
Run Code Online (Sandbox Code Playgroud)

但像

final class SimpleView: View { ...
Run Code Online (Sandbox Code Playgroud)

在运行时确实会因 EXC_BAD_INSTRUCTION 崩溃。一般情况下是不可能的还是仅就我而言是不可能的?

Sam*_*Sam 4

简短的回答:


更长的答案是 Swift(语言)允许这样做,因为没有办法禁止协议被类采用(尽管你可以强制协议仅被类采用,但这与所需的相反) 。然而,SwiftUI 依赖视图来structs更新视图的内部方法,所以不是。这与为什么需要使用@Statefor 值类型有关(因为它会观察值何时更改,如果使用引用类型,则视图只会在重新分配对象时更新,而不是在任何属性更改时更新)并使用@ObservedObjectfor引用类型(并且ObservableObjects 必须是classes。