Swift Concurrency Interoperability With Objective-C
SE-0297 (via Doug Gregor):
The proposed solution provides interoperability between Swift’s concurrency constructs and Objective-C in various places. It has several inter-dependent pieces:
- Translate Objective-C completion-handler methods into
async
methods in Swift.- Allow
async
methods defined in Swift to be@objc
, in which case they are exported as completion-handler methods.- Provide Objective-C attributes to control over how completion-handler-based APIs are translated into
async
Swift functions.The detailed design section describes the specific rules and heuristics being applied. However, the best way to evaluate the overall effectiveness of the translation is to see its effect over a large number of Objective-C APIs. This pull request demonstrates the effect that this proposal has on the Swift translations of Objective-C APIs across the Apple iOS, macOS, tvOS, and watchOS SDKs.
Previously: