平时开发过程中,可能有时候需要把拥有关联类型的协议对象作为属性的时候,这种情况下,最好的方案是使用「类型擦除」,平时我们在 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