Swiftで構造体とクラスを使い分ける方法(ポイント)

Pocket

Swiftでは構造体(struct)をとクラス(class)の使い分けの話。

Swiftでは構造体とクラスではけっこう同じ使い方ができてしまうので混同する。

構造体のポイント(クラスとの違い)

  • 継承ができない
  • 値渡しである(参照渡しではない)
  • データが多いと速度が落ちる

ここらへんをポイントとする。

継承ができない

これは言葉のままで継承できない。

継承が必要な場合は迷わずクラスを使えば良い。

値渡しである(参照渡しではない)

言葉で説明するのが難しいので、実際のコードでの違いを見てみる

ちょっと長いが勘弁。やってることは単純で、構造体とクラスを2つ作って代入している。

  • 構造体の場合は新しい構造体を生成してコピーしてる(clone)してるので、別物になる
  • クラスの場合は、参照をコピーしてるので、同じものを見ている

ので、出力結果が異なってくる。

言葉からもわかるように構造体のが辛いことをしている。

データが多いと速度が落ちる

と、上の結果がこれである。

ので、繰り返し処理とか負担のかかる処理で使うのは向かない。

ので、結論としては
  • データがそんな大きくない、継承が必要ないもの
  • 値渡しが良い

てのは構造体にすれば良い(と思うよ


おわりに

最近、 teratail が無料のわりに良くできてておすすめ。

ボクがリリースしたアプリも役に立ったらDLしてみてね -> iOSアプリ
スポンサーリンク
  • このエントリーをはてなブックマークに追加