【发布时间】:2019-05-22 14:08:20
【问题描述】:
我有以下代码:
class Mode { ... }
class TimelapseMode: Mode { ... }
var mode: Mode! = TimelapseMode()
当我检查 type(of: mode) == TimelapseMode.self 时,它返回 false,这显然是错误的。我通过设置断点和打印模式确认,确实是TimelapseMode。
但是 type(of: mode) === TimelapseMode.self 和 mode is TimelapseMode 都返回 true。
是不是元类型类没有正确实现 == 操作符?
我是否应该检查整个代码库,将 == 的这种用法替换为 ===?
【问题讨论】:
-
对我来说
type(of: mode) == TimelapseMode.self也返回 true -
我也无法重现该问题。
-
你不是说
type(of: mode) == Mode.self返回false吗? -
该变量是一个隐式展开的可选。我用该信息更新了问题。很抱歉之前忘记了。 == 返回 false 并且 === 返回 true 的情况仍然如此。我不明白为什么会这样。
标签: swift polymorphism instanceof rtti typeof