我有一个理解问题。我想在iOS Swift应用程序中使用Dropbox Objective-C框架 我已经成功导入了框架并在桥接头中设置了import子句 我也能够运行授权过程,所以我认为框架有效 然后我尝试使用框架的一个组件,该组件被声明为protocol:
class ViewController: UIViewController, DBRestClientDelegate {
}
我坐着委托属性,称为loadMetadata方法并实现了相应的事件函数:
let dbRestClient = DBRestClient(DBSession.shared())
dbRestClient.delegate = self
dbRestClient.loadMetadata("/")
...
func restClient(client: DBRestClient!, loadedMetadata metadata: DBMetadata!) {
}
我想知道的是,似乎没有必要实现该协议的所有方法。它是否正确?在Swift中只实现一部分协议就足够了吗? 我问,因为编译器没有显示任何错误,但永远不会调用委托方法。
答案 0 :(得分:1)
通常,在Swift中,您必须实现协议的所有方法。 (请参阅有关可选协议方法的问题:How to define optional methods in Swift protocol?)
但正如你所说,框架是用Objective-C编写的。 Objective-C支持协议中的可选方法。
$a = new DateTime('2016-11-05 00:00:00');
$b = new DateTime('2016-11-05 00:19:00');
$diff = ($b->getTimestamp() - $a->getTimestamp())/60;
echo $diff;
这就是为什么你不一定需要实现协议中声明的所有方法。通常,只有最重要的方法标有@protocol ProtocolName
@required
// list of required methods
@optional
// list of optional methods
@end
,因为在调用可选方法时,如果委托实现了它,则应始终检查。