staticの使い所
staticの使い所
swiftでは構造体と列挙型はfuncの前にstaticを付けるというくらいの認識でしかなく、methodを作成する際にstaticを、つける/つけないをしっかり理解できていなかったので、先輩に聞いたことをメモ。
staticはUtilityなど状態を持たないクラスで使われるとのこと。
そもそも、クラスの定義に立ち戻って考えなおすと、クラスのフィールドがクラスの状態を持ち、メソッドはクラスの振る舞いを定義している。
そして、メソッドの振る舞いは、通常クラスのフィールドに影響を受け結果を返す。
しかし、Utilityクラスなどのオブジェクトごとに、特有の状態の影響を受けて特有の結果を返すのではなく、汎用的に引数によってしか結果が決まらないメソッドを作るべき時にstaticなメソッドを作成する。
確かに、以前Push通知のClientクラスを作った時にstaticで作っていたな...
そのクラスではpush通知を受けた時にpush内容を引数に渡して、引数に応じて処理を振り分けたりしていました。
インスタンスを作成して、インスタンスごとに各々の値を持たない変数なんかはstatic変数で宣言するべきだし、
汎用的に使い、引数の値などだけで処理が完了するようなメソッドはクラスメソッドとしてstaticを忘れないようにしよう。
以下、参考にさせていただいたサイト
iOS - The Swift Programming Language - Method(メソッド)をまとめる - Qiita