从 Objective-C 调用 Swift 异步函数

Z S*_*Z S 11 objective-c swift swift5

我正在使用新的 Swift 5.5 功能来创建异步函数:

@MainActor
@objc func updateStatus() async {
    /// do async stuff...
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从 Objective-C 代码调用此方法时,它不会显示在自动完成中,并且如果我尝试构建它,则会出现构建错误:

if (@available(iOS 15.0, *)) {
     CJSubscriptionStatusCheck *backgroundStatusCheck = [[CJSubscriptionStatusCheck alloc] init];
     [backgroundStatusCheck updateStatus]; // No visible @interface for 'CJStatusCheck' declares the selector 'updateStatus'
}
Run Code Online (Sandbox Code Playgroud)

我的其他 swift 代码在 Objective-C 上运行良好,因此设置很好,但我不确定“异步”代码如何与 Objective-C 一起使用(如果有的话)。我无法通过我的研究找到这个问题的答案。

谢谢。

Sul*_*han 17

根据SE-0297 与 Objective-C 方法的并发互操作性, async自动获取添加的completionHandler参数。

updateStatusCompletionHandler:因此方法名称应该与Objective-C 中的类似。