4
我試圖測試從工廠生成的兩個對象是否相同,但編譯器似乎不允許對僅符合相同協議的對象進行身份檢查。然而,將這兩個對象投射到AnyObject似乎都很好。無論如何要避免似乎不必要的鑄造?我們可以測試符合相同協議的對象是否相同,而不需要投射?
下面是一個簡單的例子說明了我看到(在迅速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
}
}
}