Swiftにおける「イニシャライザ(initializer)」は、インスタンス生成時にプロパティの初期値を設定するための特別なメソッドです。クラス(class)および構造体(struct)の両方において使用されます。
1. イニシャライザの基本構文
-
initキーワードを使って定義します。 -
selfは現在のインスタンスを指します。 -
イニシャライザには戻り値(
->)は不要です。
2. デフォルトイニシャライザ(構造体)
構造体には、すべてのプロパティがデフォルト値を持っているか、明示的に初期化子が定義されていない場合に自動生成されるイニシャライザがあります。
3. メンバー単位イニシャライザ(構造体)
構造体では、初期値が与えられていないプロパティに対して、自動的にメンバーごとのイニシャライザが生成されます。
4. クラスにおけるイニシャライザ
クラスでは、イニシャライザを自分で定義しない限り、デフォルトイニシャライザは提供されません(全プロパティに初期値が必要です)。
5. 複数のイニシャライザ(イニシャライザのオーバーロード)
構造体・クラスともに、複数の異なるイニシャライザを定義可能です。
6. コンビニエンスイニシャライザ(クラス専用)
クラスにおいては、convenienceキーワードを使って補助的なイニシャライザを定義できます。これは、他のイニシャライザを呼び出して初期化処理を補助する目的で使われます。
7. 必須イニシャライザ(required)
requiredキーワードを使うと、サブクラスでそのイニシャライザのオーバーライドを強制することができます。
まとめ
| 種類 | 使用対象 | 特徴 |
|---|---|---|
| デフォルトイニシャライザ | 構造体 | すべてのプロパティに初期値があるとき自動生成される |
| メンバー単位イニシャライザ | 構造体 | プロパティの名前を使った初期化が可能 |
| カスタムイニシャライザ | 両方 | 独自の初期化処理が可能 |
| コンビニエンスイニシャライザ | クラス | 他のイニシャライザを補助するための補助的なイニシャライザ |
| 必須イニシャライザ | クラス | 継承先で必ず実装が必要 |
生成日:2025/05/04