Swift AnyClass

AnyClass:是所有类都隐式遵循的协议,当你用AnyClass作为实例的具体类型,所有已知的@objc类的方法和属性都作为隐式解包的可选方法或者属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Student{
@objc static let describe = "class description"
@objc class func getDefaultValue() -> Int {
return 100
}
}

func getDefaultValue(_ c: AnyClass) -> Int? {
return c.getDefaultValue?()
}
func getDescribeValue(_ c: AnyClass) -> String? {
return c.describe
}

// ptional(100)
print(getDefaultValue(Student.self))
// Optional("class description")
print(getDescribeValue(Student.self))

还可以作为类型检测:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
protocol SomeDelegate {
}

class SomeClass: SomeDelegate{
}

let instance = SomeClass.self
func isSomeDelegate(_ type: AnyClass) -> Bool{
if type is SomeDelegate.Type{
return true
}
return false
}

// true
print(isSomeDelegate(instance))