我看到了这个问题,代码如下:
protocol Flashable {}
extension Flashable where Self: UIView
{
func flash() {
UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseIn, animations: {
self.alpha = 1.0 //Object fades in
}) { (animationComplete) in
if animationComplete == true {
UIView.animate(withDuration: 0.3, delay: 2.0, options: .curveEaseOut, animations: {
self.alpha = 0.0 //Object fades out
}, completion: nil)
}
}
}
}
我想知道为什么我们不只是直接扩展UIView
?或者在类似的情况下扩展UIViewController
为什么用where Self:
- 是不是为了增加我们的意图,当其他开发人员来时,他们会看到,嘿,这个类符合 Flashable、Dimmable 等?
- 我们的 UIView 还会有单独的有意义的扩展吗?而不是 UIView 或 UIViewController 的不同未命名扩展?
- 是否有任何针对 POP 的特定 Apple 指南?我见过有开发人员这样做,但不知道为什么......