は私がthis link.類似の条件に基づいてプロトコルを拡張するプロトコルVSに準拠するクラスを拡張することの違いは?
を経たしかし、私は実際には2つのコードスニペットを下回るとの間の論理的な違いを取得いけない:
1.プロトコルErrorPopoverRendererに準拠するもののみUIViewControllersを拡張します。それに準拠するもののみUIViewControllersためのプロトコルを拡張
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。
extension ErrorPopoverRenderer where Self: UIViewController {
func presentError() {
}
}
のどちらかの方法、プロトコルに準拠する任意のUIViewControllerのサブクラスは、デフォルトのメソッドの実装を持っていますが、のUIViewController拡張子またはプロトコル拡張でます。 論理的な違いは何ですか? 私はまず第一に