OKADA LABO

Swiftのイニシャライザって何?

イニシャライザとは、クラスの初期設定を実行するメソッド。
クラスに初期化が必要な場合、インスタンス生成のタイミングで初期値を設定しなければならない。
(インスタンス生成の際、イニシャライズメソッドを実行)

例えば、何かデバイズがあるとして、
初期値として言語、パスコードを設定しなければならない場合、
Deviceクラスがあるとして、初期値lang,初期値passcodeは
Deviceクラスでインスタンスを作った際、イニシャライズメソッドによって
初期値が設定される という流れになる。
この現象だけを記述すると以下のようになる。

class Device{
  var lang:String
  var passcode:String
  init(lang:String, passcode:String){
    self.lang = lang
    self.passcode = passcode
  }
}

インスタンスを作ると、イニシャライズ init() も実行される

var deviceIns = Device(lang:”日本語”, passcode:”123”)

 

記述のルール・・・
イニシャライザの宣言ルール

init( ラベル1 引数1:型, ラベル2 引数2:型・・・){
設定
}

イニシャライズの呼び出しルール

var 変数名 = クラス(ラベル1:引数, ラベル2:引数)

※クラスのinitメソッドでラベルを省略した場合、引数名イコールラベルとなる。

 

 

init()ではなにが行われてるか?

init(lang:String, passcode:String){
self.lang = lang
self.passcode = passcode
}

self.langはプロパティ、つまり var lang。
self.lang = 右のlang は渡されてくる引数↓。

var deviceIns = Device(lang:”日本語”, passcode:”123”)

の lang:”日本語” です。
これがself.langに渡されるわけです。