The protocol to which all class types implicitly conform.
SDK
- Xcode 6.0.1+
Framework
- Swift Standard Library
Declaration
typealias AnyClass = Any Object.Type
Discussion
You can use the Any protocol as the concrete type for an instance of any class. When you do, all known @objc class methods and properties are available as implicitly unwrapped optional methods and properties, respectively. For example:
class IntegerRef {
@objc class func getDefaultValue() -> Int {
return 42
}
}
func getDefaultValue(_ c: AnyClass) -> Int? {
return c.getDefaultValue?()
}
The get function uses optional chaining to safely call the implicitly unwrapped class method on c. Calling the function with different class types shows how the get class method is only conditionally available.
print(getDefaultValue(IntegerRef.self))
// Prints "Optional(42)"
print(getDefaultValue(NSString.self))
// Prints "nil"