私は C++ の世界から来たので、代入の概念this
は私を身震いさせます:
this = new Object; // Gah!
しかし、Objective-C には同様のキーワード があり、self
これは完全に受け入れられます。
self = [super init]; // wait, what?
サンプルの Objective-C コードの多くは、上記の行をinit
ルーチンで使用しています。私の質問:
1) 代入が意味を成すのはなぜですかself
(「言語で許可されているため」などの回答はカウントされません)。
2)ルーチンで割り当てself
を行わないとどうなりますか? init
インスタンスを何らかの危険にさらしていませんか?
3) 次のif
ステートメントが失敗した場合、それは何を意味し、そこから回復するにはどうすればよいですか?
- (id) init
{
self = [super init];
if (self)
{
self.my_foo = 42;
}
return self;
}