我在代理上有这个函数签名
func session(_ session: WCSession, didReceiveUserInfo userInfo: [String : Any] = [:])
我需要在Singleton上创建一个闭包来转发委托方法,然后我这样做:
typealias sessionDidReceiveUserInfoHandler = (WCSession, [String : Any]) -> Void
var sessionDidReceiveUserInfo: sessionDidReceiveUserInfoHandler?
我这样使用它:
let mySingleton = MySingleton.sharedInstance
mySingleton.sessionDidReceiveUserInfo = {(session, userInfo) in }
现在我有了这个带有@escaping
子句的函数签名
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
这个签名我该怎么做。Xcode不允许我像这样将转义添加到typealias中:
typealias sessionDidReceiveMessageReplyHandlerHandler = (WCSession, [String : Any], @escaping ([String : Any])) -> Void
如果我创建了一个没有转义的typealias,它将不允许我在函数内部使用错误消息
无法转换类型为'([String:Any](的值->应为"Void"参数类型"[String:Any]">
您在闭包上缺少一个返回类型(即在最后一个)
内(:
typealias sessionDidReceiveMessageReplyHandlerHandler = (WCSession, [String : Any], @escaping ([String : Any]) -> Void) -> Void