美文网首页
Swift 类型加协议约束

Swift 类型加协议约束

作者: 旋律breeze | 来源:发表于2018-08-31 16:20 被阅读0次

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

    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请求数据加载动画框架

    相关文章

      网友评论

          本文标题:Swift 类型加协议约束

          本文链接:https://www.haomeiwen.com/subject/nwaswftx.html