gpt4 book ai didi

swift - 有没有办法在 Swift 中获得一个 _stable_ 泛型类名?

转载 作者:IT王子 更新时间:2023-10-29 05:23:39 24 4
gpt4 key购买 nike

在 Swift 中获取类的名称非常简单:

import Foundation

class Gen<T> {
init() { }
}

func printName(obj: AnyObject) {
dump(NSStringFromClass(obj.dynamicType))
}

let a: Gen<String> = Gen()
let b: Gen<Int> = Gen()
printName(a)
printName(b)

但是,如果您运行上面的代码两次,它不会产生相同的结果。

那么有没有一种方法可以稳定地实现 printName(获取专门的通用类的名称)?那就是代码的多次运行为同一个类打印同一个字符串?

我使用的是最新的 Xcode beta。

一些额外的要求:

  • 将传递给 printName 的类数量很多。
  • 可能有不止一个泛型类,但不会很多。

最佳答案

抱歉让您失望了,但这似乎是不可能的,除非您主动编写一个新的编译器。

检查这个source出去。作者描述得很好:注意,两个对象的isa指针是不一样的,尽管都是WrapperClass的实例。显然,泛型类的特化在运行时是一个单独的类。

我也在玩的是@objc,但这只是改变类的命名空间,但显然对类名没有影响。

关于swift - 有没有办法在 Swift 中获得一个 _stable_ 泛型类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28232474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com