【发布时间】:2015-09-13 20:43:55
【问题描述】:
我阅读了 Swift 的内联文档,我有点困惑。
1) Any 是一个所有类型都隐式遵循的协议。
2) AnyObject 是所有类都隐式遵循的协议。
3) Int, Float, Double 是结构体
这是一个示例代码:
import UIKit
func passAnyObject(param: AnyObject) {
print(param)
}
class MyClass {}
struct MyStruct {}
let a: Int = 1
let b = 2.0
let c = NSObject()
let d = MyClass()
let e = MyStruct()
passAnyObject(a)
passAnyObject(b)
passAnyObject(c)
passAnyObject(d)
//passAnyObject(e) // Argument type 'MyStruct' does not conform to expected type 'AnyObject'
if a is AnyObject { // b, d, e is also AnyObject
print("\(a.dynamicType) is AnyObject")
}
我不明白为什么Int、Double、Float 是AnyObjects?为什么编译器什么也没说?这些类型被声明为结构。 struct MyStruct 不能传递给顶部的方法,因为它不符合AnyObject。
您能帮我理解为什么Int、Double 和Float 是AnyObject,或者为什么编译器认为它们是?
【问题讨论】: