wobuhuicode
V2EX  ›  Swift

Swift 如果定义一个具备某个 协议(Protocol)的 类(class)?

By wobuhuicode at 2021 年 4 月 20 日 · 1914 次点击
class AView : UIView,ProtocolB{
}
class BView : UIView,ProtocolB{
}

let arr : UIView<ProtocolB> 

我的两个子 view 都具备 ProtocolB,我想用一个 UIView 数组去装这两个子 view 的实例。 可以这样写吗?

2 条回复  •  2021-04-25 01:15:30 +08:00
finab
   1
finab  
   2021 年 4 月 20 日
或者可以这样?
protocol ProtocolB: UIView {

}

class AView: UIView, ProtocolB {

}
class BView: UIView, ProtocolB {

}

let arr : [ProtocolB]

arr.first?.backgroundColor = .white
YYYeung
   2
YYYeung  
   2021 年 4 月 25 日
限制协议实现的类型

```swift
protocol ProtocolB where Self: UIView {}

class AView: UIView, ProtocolB {}

class BView: UIView, ProtocolB {}

let arr: [UIView] = [AView(), BView()]
```
© 2026 V2EX · 30ms · 3.9.8.5