Swiftのインスタンスから型メソッド(クラスメソッド)を呼び出す方法
背景
あるクラスのインスタンスから、そのクラスの型メソッド(クラスメソッド)を呼び出したいときにObjective-Cでは下記のようにやっていたけれどSwiftだとどう書くのか知りたかった
[[instance class] classMethod];
結論
dynamicTypeを使うことでインスタンスから型メソッド(クラスメソッド)へのアクセスが可能になる
class SampleClass() { //型メソッド(クラスメソッド) static func sampleClassMethod() { print("sampleClassMethod") } } //普通の型メソッド(クラスメソッド)の呼び出し方 SampleClass.sampleClassMethod() //sampleClassMethod //インスタンスからクラスメソッドへのアクセス let sampleClass = SampleClass() sampleClass.dynamicType.sampleClassMethod() //sampleClassMethod
dynamicTypeとはなんぞや?
dynamicTypeを使うとインスタンスのクラス自身(サブクラス化されていればサブクラス)が参照できるようです
let sampleClass = SampleClass() print(sampleClass.dynamicType) //SampleClass if sampleClass.dynamicType == SampleClass.self { print("true") //true }