平时开发过程中,可能有时候需要把拥有关联类型的协议对象作为属性的时候,这种情况下,最好的方案是使用「类型擦除」,平时我们在 swift 的官方源码中,也会看到类似 AnySequence 等等一些比较特殊的类型或者结构体,这其实就是官方提供的对类型擦除的运用。
参考官方实现,我们可以试试实现自己的协议的类型擦除中间类。
下面就是我尝试实现的代码:
1 | protocol NJState { |
平时开发过程中,可能有时候需要把拥有关联类型的协议对象作为属性的时候,这种情况下,最好的方案是使用「类型擦除」,平时我们在 swift 的官方源码中,也会看到类似 AnySequence 等等一些比较特殊的类型或者结构体,这其实就是官方提供的对类型擦除的运用。
参考官方实现,我们可以试试实现自己的协议的类型擦除中间类。
下面就是我尝试实现的代码:
1 | protocol NJState { |
原文作者:路小飞
原文链接:https://nijiehaha.github.io/2021/09/06/swift-%E7%B1%BB%E5%9E%8B%E6%93%A6%E9%99%A4/
发表日期:September 6th 2021, 11:04:56 am
更新日期:September 6th 2021, 3:34:05 pm
版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: true tags: true