blob: 3436da419d0d5fdafdd7e198591c64fbd54b675e [file] [edit]
import Foundation
@objc protocol TestWeatherServiceDelegate: AnyObject {
@objc func didUpdateWeather(_ weather: String)
}
@objc protocol TestAsyncProtocol: AnyObject {
@objc func fetchData(param: String) async -> String
}
@objc class TestWeatherService: NSObject {
@objc static func fetchWeather(delegate: TestWeatherServiceDelegate) {
DispatchQueue.global().asyncAfter(deadline: .now() + 0.1) {
delegate.didUpdateWeather("Sunny, 25°C")
}
}
}
@objc class TestSwiftInvoker: NSObject {
@objc static func invokeAsyncMethod(protocolInstance: TestAsyncProtocol, param: String) async -> String {
return await protocolInstance.fetchData(param: param)
}
@objc static func invokeAsyncMethodOnBackgroundThread(protocolInstance: TestAsyncProtocol, param: String) async -> String {
return await Task.detached {
return await protocolInstance.fetchData(param: param)
}.value
}
}