Swift Type Erasure(类型擦除)
https://juejin.cn/post/7016522510355136526?from=search-suggest
在 Swift 中,Type Erasure(类型擦除)是一种技术,主要用于解决泛型协议中的存储问题。泛型协议通常会引入类型参数,导致协议无法直接作为具体类型来使用,而是需要进行类型擦除,将泛型类型“擦除”为一个具体的、无关类型,隐藏类型参数的细节,使得协议可以作为具体类型进行存储、传递和使用。
1. 什么是 Type Erasure?
**类型擦除(Type Erasure)**的核心思想就是将泛型类型封装成一个类型擦除对象,该对象不再暴露泛型类型的具体实现细节,而是保留协议的接口。这样一来,泛型类型就可以与其它类型协作,像普通的类型一样被存储和操作。
在 Swift 中,使用类型擦除可以将泛型协议封装成一个固定类型,隐藏类型的具体细节,使得协议的使用更加灵活。
2. Thunk 技术与 Type Erasure
Thunk 技术通常指的是为了兼容或解决某些运行时问题,在方法或函数调用中插入一个额外的封装层。我们在做类型擦除时,实际上是通过插入额外的封装(例如通过封装一个具体类型)来解决泛型类型带来的问题。