在Swift类中实现Objective-C协议

激光

我有一个理解问题。我想在iOS Swift应用中使用Dropbox Objective-C框架。
我已经成功导入了框架,并在桥接头中设置了import子句。
我也能够运行授权过程,因此我认为该框架有效。
然后,我尝试使用声明为协议的框架组件:

class ViewController: UIViewController, DBRestClientDelegate {
}

我坐了一个名为loadMetadata方法的委托属性,并实现了相应的事件函数:

let dbRestClient = DBRestClient(DBSession.shared())
dbRestClient.delegate = self
dbRestClient.loadMetadata("/")
...

func restClient(client: DBRestClient!, loadedMetadata metadata: DBMetadata!) {
}

我想知道的是,似乎没有必要实现该协议的所有方法。它是否正确?在Swift中实现仅协议的一部分就足够了吗?
我问是因为编译器未显示任何错误,但从未调用委托方法。

费利克斯

通常,在Swift中,您必须实现协议的所有方法。(请参阅有关可选协议方法的问题:如何在Swift协议中定义可选方法?

但是正如您所说,该框架是用Objective-C编写的。Objective-C支持协议中的可选方法。

@protocol ProtocolName
@required
// list of required methods
@optional
// list of optional methods
@end

资源


这就是为什么您不一定需要实现协议中声明的所有方法的原因。通常,只有最重要的方法才标有@required,因为在调用可选方法时,应始终检查委托是否实现了该方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章