TypealiasSwift
AnyClass
The protocol to which all class types implicitly conform.
typealias AnyClass = AnyObject.Type
Overview
You can use the AnyClass
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 getDefaultValue(_:)
function uses optional chaining to safely call the implicitly unwrapped class method on c
. Calling the function with different class types shows how the getDefaultValue()
class method is only conditionally available.
print(getDefaultValue(IntegerRef.self))
// Prints "Optional(42)"
print(getDefaultValue(NSString.self))
// Prints "nil"