我正在做我的第一个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上运行)