在@objc协议中定义带闭包的方法

时间:2014-10-26 12:12:31

标签: objective-c swift closures

我有以下协议定义:

@objc protocol PersonDataStore {

    func findPersonWithId(remoteId: String, completionBlock: ((Person) -> Void)!)
    // ...
}

我得到的错误是第二个参数无法在Objective-C中表示。我研究了块/闭包主题,但我很难理解它,因为它在概念上是不同的。

这只是一个语法问题,还是真的不可能在Swift中定义一个带闭包的Objective-C协议?

1 个答案:

答案 0 :(得分:2)

我认为您的问题是您的班级Person不是NSObject的子类。将@objc添加到Person类的声明中,或将其设置为NSObject的子类,并且您的协议定义应该有效。