为了账号安全,请及时绑定邮箱和手机立即绑定

AnyObject无法在Xcode8 beta6中运行?

AnyObject无法在Xcode8 beta6中运行?

小唯快跑啊 2019-09-03 16:11:08
在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)")    }    //...}
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

长话短说。


要检查值是否具有引用类型:


if type(of: value) is AnyClass {

    // ...

}

要检查type是否为引用类型:


if SomeType.self is AnyClass {

   // ...

}


查看完整回答
反对 回复 2019-09-03
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

从上面的注释中从纯Swift值到AnyObject的转换成功,type(of: o)打印“_SwiftValue”。这就是我找到源文件的方式。所以似乎任意值都被装箱为AnyObject。

查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 496 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信