差分
このページの2つのバージョン間の差分を表示します。
blog:2005:2005-09-05 [2013-04-10 13:21] Decomo 作成 |
blog:2005:2005-09-05 [2015-01-06 11:51] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== イニシャライザの返り値 ====== | ||
- | |||
- | サンプルソースを見ていると、各クラスのイニシャライザは | ||
- | <code objc> | ||
- | return self; | ||
- | </ | ||
- | や | ||
- | < | ||
- | obj = [super init] | ||
- | ... | ||
- | return obj; | ||
- | </ | ||
- | というコードで、自身を返している。うーん何でだろう? | ||
- | |||
- | わが師匠[[http:// | ||
- | <code objc> | ||
- | [hogeHoge alloc]; | ||
- | [hogeHoge init] | ||
- | </ | ||
- | が | ||
- | <code objc> | ||
- | [[hogeHoge alloc] init] | ||
- | </ | ||
- | |||
- | ふーむ、最初の用途は簡単に理解できる。[hogeHoge alloc] が自身(self)を返すから、[[hogeHoge init] alloc] = [self init] = [hogeHoge init] ということが言える。 | ||
- | |||
- | でも、親クラスのイニシャライズの判別は、ちょっとわからない。なぜ、self にスーパークラスの返り値を入れることで、判別できるのだろう……?そもそも、親クラスのイニシャライズの成否を調べる場面が、今は思い浮かばない。 | ||
- | |||
- | まぁ、ボチボチ調べていくことしますか。 | ||
- | |||
- | **(2013-04-10 追記)**\\ | ||
- | 今読み返してみると、完全に「日本語でおk」な内容な件。当時の俺は何を考えていたんだろう…。 | ||