Volání Swift asynchronní funkce z Objective-C

0

Otázka

Já používám nový Swift 5.5 vlastnosti k vytvoření asynchronní funkce:

@MainActor
@objc func updateStatus() async {
    /// do async stuff...
}

Ale když se snažím volat tuto metodu z Objective-C kódu, to se neobjeví v seznamu automatického dokončování a dává stavět chyba, když se pokusím postavit:

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

Mé další swift kód funguje s Objective-C, takže nastavení je v pořádku, ale nejsem si jistý, jak 'async' kód může být použit (pokud vůbec) s Objective-C. nemůžu najít odpověď s mým výzkumem.

Díky.

objective-c swift swift5.5
2021-11-23 18:30:07
1

Nejlepší odpověď

1

Podle SE-0297 Souběžnosti Interoperability s Objective-C async metody dostat přidáno completionHandler parametr automaticky.

Proto název metody by mělo být něco podobného updateStatusCompletionHandler: v Objective-C.

2021-11-23 20:51:31

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................