在Swift2.0中,引入了protocol extension。在有些时候,我们会希望一个协议扩展的默认实现只在某些特定的条件下适用,这时我们就可以用where关键字来进行限定。标准库中的协议扩展大量使用了这个技术来进行限定,比如Sequence的sorted方法就被定义在这样一个类型限制的协议扩展中。
protocol ToastViewProtocol {}
extension ToastViewProtocol where Self: UIView {
func beginToast(msg:String,duration: TimeInterval =1.5) {
letstyle = ToastStyle()
makeToast(msg, duration: duration,position: .center, style: style)
}
}
extension UIView: ToastViewProtocol {}
限定了使用ToastViewProtocol协议的类是UIView,使用的时候用UIview的实例调用beginToast方法即可
网友评论