【发布时间】:2015-11-09 09:40:33
【问题描述】:
我试图测试从工厂生成的两个对象是否相同,但编译器似乎不允许对仅符合相同协议的对象进行身份检查。然而,将两个对象都转换为 AnyObject 似乎很好。有没有办法避免看似不必要的演员阵容?
这是一个简单的例子,演示了我所看到的(在 swift 1.2 中)
protocol FooBar {
}
class Foo: FooBar {
}
class Bar {
let foo1: FooBar?
let foo2: FooBar?
init() {
foo1 = Foo()
foo2 = Foo()
if foo1! as? AnyObject === foo2! as? AnyObject { // this is fine
}
if foo1! === foo2! { // Birnary operator '===' cannot be applied to two FooBar operands
}
}
}
【问题讨论】:
标签: swift