【发布时间】:2017-04-20 06:31:44
【问题描述】:
我想要一种符合我的自定义协议的 UIView。我尝试这样做,但 Xcode 说这不是正确的声明:
typealias ViewThatConformsToProtocol = UIView: MyCustomProtocol
这也不起作用:
typealias ViewThatConformsToProtocol = UIView, MyCustomProtocol
但我不想为此使用子类。有什么办法吗?
附言 通过子类化,我会这样:
class ViewThatConformsToProtocol: UIView, MyCustomProtocol {
}
但我不想使用子类化,因为它违反了我的设计模式(例如,当我只需要知道我的视图支持此协议的行为时,我不希望此视图子类化 ViewThatConformsToProtocol 。并且有时 View1 可以确认 Protocol1 和 Protocol2,但 View2 可以符合 Protocol1 和 Protocol3 - 这只是示例)。在 Objective-C 中你可以很容易地声明 UIView *viewForProtocol = (UIView<MyCustomProtocol> *)view1 ,但在 SWIFT 中这似乎是不可能的,所以我正在寻找绕过
【问题讨论】:
-
我并没有真正得到你想要达到的目标。如果你“为此使用子类”,你能告诉我们你会怎么做吗?
-
@Sweeper ,我已经添加了代码和cmets。
-
@MaxPevsner ,这篇文章没有帮助
-
所以你想要一个类型别名
UIView或UIview的子类并且它符合MyCustomProtocol? -
@Sweeper ,只有符合 MyCustomProtocol 的 UIView ,不是 UIView 的子类
标签: ios iphone swift swift-protocols type-alias