在以下示例中,私有
_valuePublisher
已通过 Publisher
属性公开为类型擦除的 nonisolated
。此外,_valuePublisher
的当前值也作为 nonisolated
属性公开。编译器对这种安排感到满意,但我不确定线程安全方面的问题,尤其是对于 unwrappedValue
属性。有什么想法吗?
final actor MyActor {
private let _valuePublisher = CurrentValueSubject<Int, Never>(0)
nonisolated var valuePublisher: AnyPublisher<Int, Never> {
_valuePublisher.eraseToAnyPublisher()
}
nonisolated var unwrappedValue: Int {
_valuePublisher.value
}
func updateValue(_ value: Int) {
_valuePublisher.send(value)
}
}