2014年07月31日
Posted by 屋台ブルー at
2014年07月31日00:00 Comment(0)
Swiftで遊ぼう! - 23 イニシャライザーの2フェイズ
クラス初期化の説明は長々と続く。多彩な図を使って説明しているから重要だと思ったが、どうも重要というよりは、文章を使って説明するのが難しいから助長な説明になっているのかもしれない。こういう概念は人に説明してもらった方が分かりやすいんでしょうね。私の周りに教えを請う人もいないので一人でなんとかしなければならない(T_T)。凝り固まったオヤジの理解力で新しい概念を習得するのは難しい! 何度も文章を読み返して理解していくしかない。クラスのイニシャライズのパートを読み進めよう。
Phase 1(フェイズ 1)
・指定もしくは簡単イニシャライザーはクラスで呼ばれる。
・新しいクラスインスタンスが生成のためにメモリーが割り当てられる。しかしメモリーはまだ初期化されていない。
この文章の意味もよくわからないね。メモリーが割り当てられ(allocate)たというのは、物理的なメモリー量を確保するということなんでしょうか?メモリーがまだ初期化されていない(initialize)されていないというのは、そのメモリーにある種具体的な値が保持されていないということでいいのでしょうか?
・指定イニシャライザーは、クラスで定義された値保持のプロパティが全て値を保持したことを確認する。そして、この時点でメモリーは初期化がされる。
・指定イニシャライザーは、スーパークラスで定義されているイニシャライザーにバトンタッチして、スーパークラスの保持する同様の仕事を実行させる。
・この作業は継承する最上位のクラスまで上がっていく。
・最上位のクラス、繋がりの最後のクラスに達した時に、全ての値保持プロパティはすべて値を持っていることにあんる。こうして、インスタンスのメモリーは完全に初期化されたことになり、フェイズ1は終了となる。
Phase 2(フェイズ2)
・次に繋がりの最上位から逆に下位に向かって、それぞれの指定イニシャライザーが持っているオプション、インスタンスをカスタマイズする尾婦tションを実行していくことができる。そうです、ここでやっとself値にアクセスしてプロパティーに変更することができるし、インスタンスのメソッドや他のオプションを実行する。
・最終的に簡単イニシャライザーのオプションが呼ばれて、self値やインスタンスの変更が加えられて終了。
と、大方の初期化ステップを頭に入れよう。
Phase 1(フェイズ 1)
・指定もしくは簡単イニシャライザーはクラスで呼ばれる。
・新しいクラスインスタンスが生成のためにメモリーが割り当てられる。しかしメモリーはまだ初期化されていない。
この文章の意味もよくわからないね。メモリーが割り当てられ(allocate)たというのは、物理的なメモリー量を確保するということなんでしょうか?メモリーがまだ初期化されていない(initialize)されていないというのは、そのメモリーにある種具体的な値が保持されていないということでいいのでしょうか?
・指定イニシャライザーは、クラスで定義された値保持のプロパティが全て値を保持したことを確認する。そして、この時点でメモリーは初期化がされる。
・指定イニシャライザーは、スーパークラスで定義されているイニシャライザーにバトンタッチして、スーパークラスの保持する同様の仕事を実行させる。
・この作業は継承する最上位のクラスまで上がっていく。
・最上位のクラス、繋がりの最後のクラスに達した時に、全ての値保持プロパティはすべて値を持っていることにあんる。こうして、インスタンスのメモリーは完全に初期化されたことになり、フェイズ1は終了となる。
Phase 2(フェイズ2)
・次に繋がりの最上位から逆に下位に向かって、それぞれの指定イニシャライザーが持っているオプション、インスタンスをカスタマイズする尾婦tションを実行していくことができる。そうです、ここでやっとself値にアクセスしてプロパティーに変更することができるし、インスタンスのメソッドや他のオプションを実行する。
・最終的に簡単イニシャライザーのオプションが呼ばれて、self値やインスタンスの変更が加えられて終了。
と、大方の初期化ステップを頭に入れよう。