上記の中で特に意識すべきところは、 変数に入れるときに「参照型/値型」のどちらになるか。 クラスは、参照型なので、参照を渡すだけだが、 構造体は常にコピーを渡す。 構造体を使うパターン 小さくて単純なデータをカプセル化をしたい場合 参照渡しより値渡し(コピー)がいい場合 継承が必要ない場合 構造体を避けた方がいいパターン データが大きい プロパティが多い 理由としては、以下の2つ 構造体は変数にセットする度にコピーされるため、データが大きいと処理時間が遅くなる 構造体はスタック領域に確保されるため、データが大きいと溢れる可能性が高くなる なので、APIやDBの取得データなどは構造体ではなく、クラスで作成したほうがよさそう 結論としては、 プロパティが数個のもので、カプセル化させると扱いやすいケース メソッドはそのデータの加工を行うような場合に実装する 例えば・・・ イベントの開催日時と終了
![Swiftのクラスと構造体の使い分けについてのメモ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/e3bb759320efa1a0c0f967543cf6dd45ace7b033/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9U3dpZnQlRTMlODElQUUlRTMlODIlQUYlRTMlODMlQTklRTMlODIlQjklRTMlODElQTglRTYlQTclOEIlRTklODAlQTAlRTQlQkQlOTMlRTMlODElQUUlRTQlQkQlQkYlRTMlODElODQlRTUlODglODYlRTMlODElOTElRTMlODElQUIlRTMlODElQTQlRTMlODElODQlRTMlODElQTYlRTMlODElQUUlRTMlODMlQTElRTMlODMlQTImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTAwZTAwZjJhYTJmNmVlOTAzZDEyYjFhOWM1ZDMwZDZj%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbWluaV9ob3VzZSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NzRmMWNiNGE5NDRkYmViNzg2YjM0Zjc4ZDQ4ZWYwMTY%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D4ed069311cae101d375fe37bfc50234b)