2016-04-11 9 views
0

私は、このようなプロトコルと拡張子を宣言し"A"を "AプロトコルB"にキャストする方法はありますか?

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." 

     } 

    } 

} 

私はUIViewの「へviewをキャストすることができFooProtocolに準拠"?

答えて

1

は、私はそれがあるべきだと思うように:

protocol FooProtocol { 
    func changeAlphaToZero() 
} 


extension UIView: FooProtocol { 

    func changeAlphaToZero() { 

     self.alpha = 0 

    } 

} 
関連する問題