我这样声明协议和扩展名,
protocol FooProtocol: class {
}
extension FooProtocol where Self: UIView {
func changeAlphaToZero() {
self.alpha = 0
}
}
我试图像这样使用
changeAlphaToZero()
(仅作为示例)。class MyClass {
func setViewAlphaToZeroIfNeeded(view: UIView) {
if let v = view as? FooProtocol {
v.changeAlphaToZero() // Compile Error "FooProtocol is not a subtype of UIView."
}
}
}
我可以将
view
强制转换为“ UIView符合FooProtocol”吗? 最佳答案
我认为应该是这样的:
protocol FooProtocol {
func changeAlphaToZero()
}
extension UIView: FooProtocol {
func changeAlphaToZero() {
self.alpha = 0
}
}
关于ios - 如何将“A”转换为“A符合协议(protocol)B”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36542192/