Я работаю над своим первым проектом 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)
}
}
}
Когда я запускаю это, я получаю сообщение об ошибке «Поток 1: EXC_BAD_ACCESS (code = 2, address = 0x104465d48) "в строке" Text (object.value) "ContentView. Интересно, однако, что ошибка больше не возникает, и она работает, как и ожидалось, когда я изменяю ObjectProtocol на:
protocol ObjectProtocol: ObservableObject {
// var value: String { get }
}
У кого-нибудь есть идеи относительно того, что вызывает это? Это ошибка с SwiftUI / ObservableObject или я что-то неправильно понимаю?
(работает на iOS 13.0, Swift 5, Xcode 11.3.1)