提问人:shim 提问时间:11/3/2022 最后编辑:shim 更新时间:1/12/2023 访问量:524
调用 UIViewController dismiss 和/或存在于异步上下文中?
Calling UIViewController dismiss and/or present in an async context?
问:
根据异步调用 Objective-C API 从 Objective-C 导入的满足特定要求的方法被“导入为两个方法”,其中一个方法而不是完成块。async
如果该方法有多个参数,并且最后一个参数的选择器部分是以下参数之一,则 Swift 会将该方法作为异步方法导入 ...
completion
present(_:animated:completion:)
的 Objective-C 签名是 presentViewController:animated:completion:
。UIViewController
因此,基于此,应该有一个异步替代方案,如下所示:present
func present(_ viewControllerToPresent: UIViewController, animated flag: Bool) async
同样,对于其他方法,如.dismiss
但 Xcode 似乎没有任何这些方法的内置异步版本。
我认为这些方法仍然是从 Objective-C 导入的......如果你打开 的定义 ,有一个选项可以打开“原始源代码”,它是 Objective-C。present
我是否误解了“异步调用 Objective-C API”文档?或者 Swift 不使用异步替代方案导入这些方法还有其他原因吗?
答:
1赞
shim
11/8/2022
#1
它们在头文件中标记为 ,以显式阻止生成异步版本
NS_SWIFT_DISABLE_ASYNC
在上面的评论中归功于 Dan
评论
0赞
shim
11/8/2022
@dan如果你添加一个答案,我会删除这个答案
评论
NS_SWIFT_DISABLE_ASYNC