Type Alias

AnyClass

The protocol to which all class types implicitly conform. このプロトコルに対して、全てのクラス型は暗黙的に準拠します。

Declaration 宣言

typealias AnyClass = AnyObject.Type

Discussion 解説

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: あなたはAnyClassプロトコルをあらゆるクラスのインスタンスに対して具象型として使うことができます。あなたがそうする場合、全ての既知の@objcクラスのメソッドおよびプロパティは、暗黙的にアンラップされるオプショナルのメソッドおよびプロパティとしてそれぞれが利用可能です。例えば:


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. getDefaultValue(_:)関数は、オプショナル連鎖を使って、暗黙的にアンラップされるクラスメソッドをc上で安全に呼び出します。この関数を異なるクラス型で呼び出すことは、どのようにgetDefaultValue()クラスメソッドが条件付きでのみ利用可能であるのかを示します。


print(getDefaultValue(IntegerRef.self))
// Prints "Optional(42)"


print(getDefaultValue(NSString.self))
// Prints "nil"

See Also 参照

Existential Types 存在型