我有一个ObservableObject
视图模型和一个@Published
变量,该变量是一个枚举,指示viewModel的状态:
class BatchesViewModel: ObservableObject {
@Published private var lookupStatus: BatchLookupStatus = .none
...
}
enum BatchLookupStatus {
case none
case lookingUp(searchText: String)
case error(errorMessage: String)
case validated(batch: Batch)
}
我在出现错误或验证时设置状态。在消除错误后,我将状态设置回.none。
一切正常,除了我随机遇到EXC_BAD_accESS崩溃。
我想查看发生这种情况时的状态,因此我在设置状态时输入了一条打印语句:
@Published private var lookupStatus: BatchLookupStatus = .none {
didSet {
print(_lookupStatus)
}
}
我注意到,使用该打印语句,崩溃不再发生。实际上,如果我只留下一个空白的didSet
,它也可以防止崩溃:
@Published private var lookupStatus: BatchLookupStatus = .none { didSet {} }
一旦我移除didSet
,它就会再次崩溃。
世界上正在发生什么?