ObservableObject和协议的错误

时间:2020-03-02 00:09:17

标签: ios swift xcode swiftui

我正在做我的第一个SwiftUI项目,并且遇到了ObservableObject的问题,我很茫然。以下是我的代码的简化版本,再现了该问题:

import Foundation

protocol ObjectProtocol: ObservableObject {
    var value: String { get }
}

class Object: ObjectProtocol {
    @Published private(set) var value: String

    init(value: String) {
        self.value = value
    }
}

和我的内容视图:

import SwiftUI

struct ContentView: View {
    @ObservedObject var object: Object

    var body: some View {
        VStack {
            Text(object.value)
        }
    }
}

运行此命令时,在ContentView的“ Text(object.value)”行出现错误“线程1:EXC_BAD_ACCESS(code = 2,address = 0x104465d48)”。有趣的是,当我将ObjectProtocol更改为:

时,该错误不再发生,并且按预期运行
protocol ObjectProtocol: ObservableObject {
    // var value: String { get }
}

有人对导致这种情况的原因有任何想法吗?这是SwiftUI / ObservableObject的错误,还是我误会了什么?

(在iOS 13.0,Swift 5,Xcode 11.3.1上运行)

0 个答案:

没有答案