我需要从Objective-C调用swift函数。这需要有一个回调(将从obj-c执行)
@objc public func getTokens(forAuthentificationCode auth_code : String, completion: ()->()? )
我得到“方法不能被标记为@objc,因为参数...”如何使用可以从Objective-C使用的完成块来制作函数?
您将completion
参数声明为()->()?
,这将转换为不带参数的闭包,并返回Void?
。Objective-C仅对类参数支持可选参数,因此完成模块与Objective-C不兼容。
但是我认为您打算将整个闭包声明为可选的,以便允许调用者传递nil,在这种情况下,您需要将闭包定义包装到另一组括号中:completion: (() -> Void)?
。我将返回类型从更改为,()
以Void
提高可读性,这Void
只是的别名()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句