相关疑难解决方法(0)

SwiftUI 表未正确取消初始化关联实例

我\xe2\x80\x99在 SwiftUI 中遇到了与工作表演示相关的令人费解的行为。关闭工作表时,我注意到关联的实例(工作表\xe2\x80\x99s 视图持有的视图模型)don\xe2\x80\x99t 似乎已正确取消初始化。

\n

根据我的测试,唯一deinit按预期被调用的场景是使用@StateObject. 相反,@ObservedObject@Observable宏 don\xe2\x80\x99t 似乎都会触发调用deinit

\n

下面,我\xe2\x80\x99ve提供了一组展示各种场景的示例。每个尝试以不同的方式提供视图模型。要测试解雇,您只需在显示的工作表上向下滑动即可:

\n
import SwiftUI\n\n// ============================================================================ //\n// MARK: - App\n// ============================================================================ //\n\n@main\nstruct SwiftUISheetDeinitIssueApp: App {\n    var body: some Scene {\n        WindowGroup {\n            CaseA_ContentView()\n        }\n    }\n}\n\n// ============================================================================ //\n// MARK: - Case A: @StateObject (Works!)\n// ============================================================================ //\n\nstruct CaseA_ContentView: View {\n    @State var isPresented = false\n    \n    var body: some View {\n        Button("Show Sheet") {\n            self.isPresented = true\n        }\n        .sheet(isPresented: $isPresented) {\n            CaseA_SheetView()\n …
Run Code Online (Sandbox Code Playgroud)

swiftui observedobject swiftui-sheet

10
推荐指数
1
解决办法
1233
查看次数

标签 统计

observedobject ×1

swiftui ×1

swiftui-sheet ×1