美文网首页
关于iOS O-C使用泛型T的理解

关于iOS O-C使用泛型T的理解

作者: irisg80236 | 来源:发表于2018-12-14 18:41 被阅读0次

    学习MVP设计思想时看到一个文章里面的一段代码,很是疑惑,简单记录下分析过程。
    在iOS 上实现MVP(附代码)
    其中Presenter实现如下

    Presenter的声明

    表示Presenter 是一个泛型类,符合某个类型的一个类,这个类型目前暂用E来表示。其中有一个E类型的成员变量_view

    Presenter的子类HttpPresenter依然是一个泛型类,符合E这种特性

    HttpPresenter的声明

    目前为止,E这个类型都还是抽象的,知道HttpPresenter的子类声明的时候才给实例化这个类型

    HomePresenter的声明

    注意此处的<id<SubHomeViewProtocol>> 写法相当于

    实例化E

    此处表明了E这个类型就是一个遵循了SubHomeViewProtocol的任意id类型对象 。

    Presenter 类为抽象E类型
    HttpPresenter 继承自Presenter类并没有具体化这个E类型依然为抽象E类型
    HomePresenter继承自HttpPresenter时具体化了这个E类型 为符合id<SubHomeViewProtocol> 标准的类型

    子类继承自父类时,可以声明自己的泛型类型也可以不声明,可以具体化父类的泛型类型也可以不具体化.泛型类的表现像是子类声明时具体化父类的泛型类型,仅在当前类将泛型类型具体为某个标准。
    如HttpPresenter的实现文件内 _view 仅仅可以调用SubHomeViewProtocol的方法,调用别的协议会出现问题,但是在HttpPresenter的实现文件内_view是可以调用任意自定义协议的方法的

    相关文章

      网友评论

          本文标题:关于iOS O-C使用泛型T的理解

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