Код: Выделить всё
Capture of 'undoManager' with non-sendable type 'UndoManager?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
Код: Выделить всё
class ViewModel: ObservableObject {
@Published var model: MyModel = .init()
func exampleIntent(with undoManager: UndoManager? = nil) {
undoablyPerform(with: undoManager) {
model.changeSomething()
}
}
private func undoablyPerform(with undoManager: UndoManager? = nil, doit: () -> Void) {
let oldModel = model
doit()
undoManager?.registerUndo(withTarget: self) { targetSelf in
self.undoablyPerform(with: undoManager) { // Implements redo, but captures UndoManager inside @Sendable closure
targetSelf.model = oldModel
}
}
}
}
Конечно, Я не могу быть единственным, кто столкнулся с этой проблемой... Есть ли другой способ реализовать функцию повтора, чтобы избежать этого предупреждения? Будем очень признательны за любые идеи и предложения!
Подробнее здесь: https://stackoverflow.com/questions/790 ... osure-warn