我有一个理解问题。我想在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] 删除。
我来说两句