Swift 泛型或变量支持多 Protocol 的实现

在 OC 中想要定义一个变量是某个类的实例,并且遵守了若干 Protocol 很容易实现,比如:

SomeClass<Protocol01, Protocol02> *instance = ... 

在 Swift 中如果想要实现同样的效果应该怎么办呢?可以按照下面的写法实现:

var instance: SomeClass & Protocol01 & Protocol02 = ...

需要注意的是,如果 SomeClass 或者 Protocol 最低版本大于工程支持的最低版本,同样需要添加 @avaliable 标注。


如果是想在一个方法中的参数实现同样的效果可以这样写:

class SomeClass {
   let mySpecialViewController: VCWithSomeProtocol

   init<T: UIViewController>(injectedViewController: T) where T: SomeProtocol {
       self.mySpecialViewController = VCWithSomeProtocol(vc: injectedViewController)
   }
}

猜你喜欢

转载自blog.csdn.net/kaiyuanheshang/article/details/81633848
今日推荐