在 @Sendable 闭包中捕获 'self'

Capture of 'self' in a `@Sendable` closure

我的应用使用以下视图控制器和 IBAction
当某个按钮触发动作时,该按钮将被禁用,并启动一些后台处理。
后台处理完成后,按钮将再次启用,这必须在主线程上完成。

final class DebugViewController: UIViewController {
  button.isEnabled = false
  // …
  @IBAction func action(_ sender: Any) {
    // …
    Task {
      // some background processing
      DispatchQueue.main.async {
        self.button.isEnabled = true
      }
    }
    // …
  }
}

在构建过程中,以下警告显示在语句 self.button.isEnabled = true:

Capture of 'self' with non-sendable type 'DebugViewController' in a `@Sendable` closure  

我可以通过将 DebugViewController 声明为

来避免此警告
final class DebugViewController: UIViewController, @unchecked Sendable {  

但是,当我分析而不是构建代码时,我现在在这一行收到以下错误:

Redundant conformance of 'DebugViewController' to protocol 'Sendable'  

所以有点迷茫:

最终,如何正确地做到这一点?

这显然是 Xcode 13.3 Beta 2 中的错误。在已发布的版本 13.3 (13E113) 中,没有显示警告。