Objective-Cでのinitメソッドの記述に関する一般的な質問があります。
初期化を続行する前に、initメソッドがself = [super init]がnilでないかどうかを確認する必要があることが、どこでも見られます(Appleのコード、書籍、オープンソースコードなど)。
initメソッドのデフォルトのAppleテンプレートは次のとおりです。
- (id) init
{
self = [super init];
if (self != nil)
{
// your code here
}
return self;
}
どうして?
initがnilを返すのはいつですか?NSObjectでinitを呼び出してnilが返された場合、何かが本当にねじ込まれているはずですよね?そしてその場合、あなたはプログラムを書くことすらできないかもしれません...
クラスのinitメソッドがnilを返すことは本当にありふれたことですか?もしそうなら、どのような場合に、そしてなぜ?