Ошибка с ObservableObject и протоколами - PullRequest
0 голосов
/ 02 марта 2020

Я работаю над своим первым проектом 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...