具有可以从objective-c使用的完成块的方法

时间:2018-03-02 13:33:21

标签: swift

我需要从objective-c调用一个swift函数。这需要有一个回调(将从obj-c执行)

@objc public func getTokens(forAuthentificationCode auth_code : String, completion: ()->()? )

我得到“方法无法标记@objc,因为参数......” 如何使用可以在objective-c中使用的完成块来创建函数?

1 个答案:

答案 0 :(得分:2)

您将completion参数声明为()->()?,转换为没有参数的闭包,并返回Void?。 Objective-C仅支持类参数的选项,因此完成块不是Objective-C兼容的。

但是我认为你打算将整个闭包声明为可选,以便允许调用者传递nil,在这种情况下,你需要将闭包定义包装到另一组括号中:completion: (() -> Void)?。我将返回类型从()更改为Void以提高可读性,因为Void只是()的别名。