【发布时间】:2015-12-26 15:31:33
【问题描述】:
我正在通过this link.
但我并没有真正理解以下两个代码 sn-ps 之间的逻辑区别:
1.仅扩展那些符合协议 ErrorPopoverRenderer 的 UIViewController。
protocol ErrorPopoverRenderer {
func presentError(message: String, withArrow shouldShowArrow: Bool, backgroundColor: UIColor, withSize size: CGSize, canDismissByTappingAnywhere canDismiss: Bool)
}
extension UIViewController: ErrorPopoverRenderer { //Make all the UIViewControllers that conform to ErrorPopoverRenderer have a default implementation of presentError
func presentError(message: String, withArrow shouldShowArrow: Bool, backgroundColor: UIColor, withSize size: CGSize, canDismissByTappingAnywhere canDismiss: Bool)
{}
}
2。仅为符合它的 UIViewController 扩展协议。
extension ErrorPopoverRenderer where Self: UIViewController {
func presentError() {
}
}
无论哪种方式,任何符合协议的 UIViewController 子类都将具有默认方法实现,但在 UIviewcontroller 扩展或协议扩展中。 逻辑上的区别是什么? 如果我错了,请纠正我
【问题讨论】: