私は 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;
}