2016-04-11 4 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." 

     } 

    } 

} 

Могу ли я бросить view к «UIView соответствует FooProtocol "?

ответ

1

Я думаю, что это должно быть так:

protocol FooProtocol { 
    func changeAlphaToZero() 
} 


extension UIView: FooProtocol { 

    func changeAlphaToZero() { 

     self.alpha = 0 

    } 

} 
Смежные вопросы