Swift 类型加协议约束

2018-08-31  本文已影响0人  旋律breeze

问题
有这么一个协议, 可以用来重新发起请求

public protocol ReRequestable: class {
    var request: () -> Void { set get }
}

但是如何建立一个约束 要求 必须是一个遵守 ReRequestable 的 UIView呢, 在C# 中 可以这么写 UIView<ReRequestable>, 但是Swift 中不支持,怎么办??

补充 swift4.0已经支持 这种语法 UIView & ReRequestable
.
.
.
.
.
有一个替代的替代办法:

public protocol Viewable{
    var realView: UIView { get }
}

然后

public typealias ReRequestableView = ReRequestable & Viewable

问题不但得到解决,引起了一点思考
为什么 约束一定要是 遵守某个protocol的class
比如这个例子,开始我以为 一定要是遵守 ReRequestable 的 UIView

提供一个UIView, 并且遵守ReRequestable协议是更好的选择,
即: 两个protocol组合是比遵守某个protocol的class 更好的选择,只需要创建一个可以提供特定class实例的protocol

Code here
Github请求数据加载动画框架

上一篇下一篇

猜你喜欢

热点阅读