С UndoManager.registerUndo (withTarget: selector: object :) я могу зарегистрировать операцию отмены, и в предоставленном селекторе вызов этого же метода снова вызывает регистрацию операции повторения. Это работает нормально, если только в селекторе я не вызываю асинхронную функцию, которая затем должна зарегистрировать операцию повтора, например:
func job() {
doSomething()
registerUndo(self, undo)
}
func undo() {
async {
doSomethingElse()
registerUndo(self, job)
}
}
В этом случае оба вызова registerUndo () фактически регистрируют операцию отменыи не отменить, а затем повторить, как я ожидал. Есть ли решение этой проблемы?