【发布时间】:2016-08-27 19:25:46
【问题描述】:
我惊讶地发现这个条件总是成立的:
let foo: Any = 4
if let object = foo as? AnyObject {
print("It's an object.")
//do something with `object` that requires reference semantics
} else {
print("It's not an object.")
}
看来不管foo原来是什么类型,都转换成对应类的实例了。有没有可靠的方法来确定foo 是否是一个对象?
【问题讨论】:
-
这是在 Swift 3 中吗?如果是这样,请参阅AnyObject not working in Xcode8 beta6?
-
链接的线程没有回答“如果
Any是类实例或其他东西,我们如何区分它的内容?”的问题。为什么这被标记为“重复”? -
@MartinR,OP 的描述是“是否有可靠的方法来确定 foo 是否是一个对象?”。不坚持使用
is或as?,所以可能还有别的办法。 -
感谢@Hamish 的链接;很高兴知道我不是唯一一个对这种行为感到惊讶的人。