2012-03-20 17 views
1

Appleの開発サイトから「objective c guide」を読んでいるときに疑問符が付いた。このquestionから、私はすでにサブクラスとスーパークラス 'initialize'メソッドの両方が呼び出されることを知っています。私の質問は、なぜこれが起こるのですか?私はその投稿から、初期化が常に呼び出されることも知っていますが、スーパークラスそのものを使用していないときでさえ、サブクラスのみを使用している場合でもそうです。Objective Cサブクラスの初期化メソッドがスーパークラスのinitializeメソッドを呼び出す方法

このトピックに頭に浮かんだのわずかな関連質問:

  • サブクラスは、それが一緒にいくつかの新しいメソッド/変数で、スーパークラスだ、または
  • がにスーパークラスからコピーされたすべてです「が含ま」んサブクラス?

最初のケースでは、initializeメソッドがサブクラス内の '含まれた'スーパークラスに送信されることを理解しています.2番目のオプションでは、サブクラスのinitializeメソッドが明示的に[super initialize]それはそうではありません。

ありがとうございます!

答えて

4

+initialize呼び出しは特別であり、すべてのクラスに対して明示的に呼び出されます。これはあなたが見慣れている通常の継承チェーンの外側で行われます。 +initializeは、最初にアクセスされたときに、すべてのクラス、サブクラス、カテゴリで呼び出されます(カテゴリは独自の初期化を取得します)。

+0

super、thanks! – Pega88

関連する問題