なえT備忘録

何の参考にもならないかもしれませんが、いつかは参考になるようにします

Swift staticの効果

構造体/クラス内で定数を宣言する。

 

struct Hoge {

 let hoge = hugahuga

 }

 

この定数をクロージャ外で呼び出す際、通常は構造体/クラスをインスタンス化させないと呼出できない。

 

let hoge = Hoge()

print (hoge.hoge)

//実行結果 hugahuga

 

しかし、構造体/クラス内で定数を宣言する際、前にstatic と記載すると、インスタンス化しなくても直接"型名.プロパティ"と記載することで呼出可能になる。

 

struct Hoge {

 static let hoge = hugahuga

 }

print (Hoge.hoge)

//実行結果 hugahuga

 

これは、構造体/クラス内で宣言した定数が、通常はinstance propertyとしてインスタンスに関連付いて登録される所、staticがついた定数はtype propertyとして型自体に登録されるため、インスタンス化しなくても呼出可能となる、ということ。

Model内で生成したColor構造体や、Constant構造体(ID等を保管する場所)が持つプロパティは、staticをつけて定数を宣言することで、他のクラスで呼び出しやすくすると吉

 

ちなみにstaticはメソッドにも使える

struct Hoge {

 static func hoge(){ 

    print (hugahuga)

 }

Hoge.hoge

//実行結果 hugahuga