我需要从objective-c调用一个swift函数。这需要有一个回调(将从obj-c执行)
@objc public func getTokens(forAuthentificationCode auth_code : String, completion: ()->()? )
我得到“方法无法标记@objc,因为参数......” 如何使用可以在objective-c中使用的完成块来创建函数?
答案 0 :(得分:2)
您将completion
参数声明为()->()?
,转换为没有参数的闭包,并返回Void?
。 Objective-C仅支持类参数的选项,因此完成块不是Objective-C兼容的。
但是我认为你打算将整个闭包声明为可选,以便允许调用者传递nil,在这种情况下,你需要将闭包定义包装到另一组括号中:completion: (() -> Void)?
。我将返回类型从()
更改为Void
以提高可读性,因为Void
只是()
的别名。