Avatar
僕はViewModelの中ではなくView側に Task.init を書くスタイルでコードを書いているのでボタン無効化のタイミングが遅れて困っていましたが、 Task.init をViewModel側に書けば問題なく対応できそうな気がしてきました・・・。 func onButtonPressed(sender: UIButton) { viewModel.fetchFoo() } @MainActor final class ViewModel: ObservableObject { ... func fetchFoo() { isButtonDisabled = true Task { defer { isButtonDisabled = false } ... // 非同期処理 } } }