根據Calling Objective-C APIs Asynchronously從 Objective-C 匯入的滿足特定要求的方法被“作為兩個方法匯入”,其中一個是async沒有完成塊。
如果該方法有多個引數,并且最后一個引數的選擇器部分是以下之一,則 Swift 將該方法匯入為異步方法...
completion
Objective-C 的簽名UIViewController present(_:animated:completion:)是presentViewController:animated:completion:.
因此,基于此present應該有一個異步替代方案,如下所示:
func present(_ viewControllerToPresent: UIViewController, animated flag: Bool) async
對于其他方法也是如此,例如dismiss.
但是 Xcode 似乎沒有這些方法的任何內置異步版本。
我認為這些方法仍然是從 Objective-C 匯入的……如果您打開 的定義present,則可以選擇打開“原始源”,它是 Objective-C。
我是否誤解了“異步呼叫 Objective-C API”檔案?還是有其他原因導致 Swift 不使用異步替代方法匯入這些方法?
uj5u.com熱心網友回復:
它們
NS_SWIFT_DISABLE_ASYNC在頭檔案中標有 以明確防止生成異步版本
在上面的評論中感謝 Dan
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/529047.html
