はじめに
Swiftを勉強していると変数名の前にstaticやprivate、State など呪文のような言葉がついており、なんだこれ!?と思った方も多いのではないでしょうか。
ですので、それぞれどういった意味を持っているのかについてまとめました!!
static
static var hoge
そもそもこのstaticとは一体何者なのでしょうか。
それは、値を保持し続ける変数を宣言するためのものである。一般的には「静的変数」と呼ばれている。
staticで宣言した変数はインスタンスを生成しなくてもアクセスすることができる。
一方で、値の再度初期化ができないため、インスタンス単位でアクセスすることはできない。
アクセス修飾子
アクセス修飾子とは
クラスや変数等がどこからアクセス可能であるかを決定するものである。
種類
// デフォルトの修飾子である。省略可能。
internal var hoge
// クラス内でのみアクセス可能。
private var hoge
// 同じファイル内でのみアクセス可能。
fileprivate var hoge
// どこからでもアクセス可能。継承やオーバーライドはできない。
public var hoge
// どこからでもアクセス可能。継承やオーバーライドもできる。
open var hoge
open -> public -> internal -> fileprivate -> private
openになるにつれ制限が緩く、privateになるにつれ制限がきつくなる。
データバインディング
データバインディングとは
データとViewを紐付けて、データを更新すると、紐付けされたViewが再描画するという仕組みである。
種類
@state
Viewとプロパティを紐付けしている仕組みである。
SwiftUIのViewはstructであるため、プロパティの更新ができないが、@stateを用いることによりプロパティの変更が可能となる。そして、プロパティの値が変更されるとViewがSwiftUIによって自動的に再描画する。
@ObservedObject
データクラス(クラスのインスタンス)とViewを紐付けするための仕組みである。
クラスとして定義をし、@published属性が付与されたプロパティを監視している。
@EnvironmentObject
@ObservedObjectと同様の仕組みである。
違いは、アプリケーション全体でアクセス可能であること。アプリケーション全体で共有したいデータを扱うときに使用する。
最後に
変数の前につけるあれこれをざっと紹介しました!
この記事が全てではなく、大まかな意味を理解できれば良いかなと思い,書きました。
もっと深く理解したい方は参考記事をご覧ください。
最後まで読んでいただきありがとうございました。