AnyObject无法在Xcode8 beta6中运行?

在Xcode8 beta6中,以下代码将引发警告:'is'test始终为true。但它不会打印通过。


    struct TestStruct {

    }


    //warning: 'is' test is always true

    if TestStruct() is AnyObject {

        print("pass")

    }

以下代码将引发警告:从'T'到'AnyObject'的条件转换始终成功


public static func register<T>(_ protocolType: T.Type, observer: T) {


    //Warning: Conditional cast from 'T' to 'AnyObject' always succeeds

    guard let object = observer as? AnyObject else {

        fatalError("expecting reference type but found value type: \(observer)")

    }

    //...

}


小唯快跑啊
浏览 497回答 3
3回答

汪汪一只猫

长话短说。要检查值是否具有引用类型:if type(of: value) is AnyClass {&nbsp; &nbsp; // ...}要检查type是否为引用类型:if SomeType.self is AnyClass {&nbsp; &nbsp;// ...}

慕娘9325324

从上面的注释中从纯Swift值到AnyObject的转换成功,并type(of: o)打印“_SwiftValue”。这就是我找到源文件的方式。所以似乎任意值都被装箱为AnyObject。
打开App,查看更多内容
随时随地看视频慕课网APP