【发布时间】:2019-08-22 23:53:41
【问题描述】:
假设我正在使用这样的泛型类型:
class Foo<T> {
init () {
print(T.self)
// Breakpoint here
}
}
Foo<String>()
一开始它会按预期打印“String”,但是如果我在调试器中键入po T.self,它会在断点处暂停,而不是显示结果,它会立即结束调试会话。 po String.self 工作正常,所以我认为它是泛型特有的。
这是 Xcode 中的错误吗?有什么办法可以解决这个问题,无需在代码本身中添加额外的调试行即可查看泛型的当前类型?
【问题讨论】:
-
无法复制。在我的机器上打印出
Swift.String。 -
如果你的意思是“结束调试会话”调试器退出或崩溃,那总是一个错误。你没有说你正在使用什么 swift 版本,并且解析 swift 泛型一直是 swift-debugger 接口的一个棘手部分。因此,这很可能会在最近的 Swift 中得到解决。我不能用 Xcode 11 beta 重现这个。但无论如何,如果您有一些重现此问题的示例代码,请使用bugs.swift.org 或bugreporter.apple.com 提交错误。
-
@JimIngham Swift 5,但我仍在使用 Xcode 10.3,所以它可能已在测试版中修复?
-
可能,我们做了很多工作来使 Swift 5.1 (Xcode 11) 中的类型重建更加可靠。我无法重现该问题,但此时我只安装了 11 个,所以这也可能是一些配置差异。不确定 matt 使用的是什么...