SwiftUI 等值视图优化

Tay*_*lor 5 macos swift swiftui

我按照本文中的步骤通过自定义比较来提高 SwiftUI 性能。现在,我只是true返回==

struct MyView: View, Equatable {
   
   @ObservedObject var model: DataModel
   
   static func == (lhs: Self, rhs: Self) -> Bool {
       return true
   }

   var body: some View { ... lots of stuff ... }

}
Run Code Online (Sandbox Code Playgroud)

我习惯.equatable()把它包裹MyViewEquatableView使用它的地方。

然而,在 SwiftUI 工具中,每当发生变化时,我仍然会看到整个视图被重建DataModel。并且调试器确认该body调用。==也称为。

我的理解是,如果比较时返回 true,body则不应调用。==那是对的吗?

我该如何进一步调查此事?

Mec*_*cid 1

尝试使视图符合 Equatable,而不需要像 @ObservedObject 这样的任何依赖项。它应该具有简单的属性。