-init
メソッドがself
のメッセージのみを呼び出すと仮定すると、メッセージnil
が有効でない場合self != nil
かどうかをチェックするのはなぜですか?メッセージnilが効果を持たない場合、なぜself!= nilで-initをチェックするのですか?
のは、次のように我々は初期化子を持っているとしましょう:
- (id)init
{
self = [super init];
if (self) {
[self doThis];
[self setFoo:@"Bar"];
}
return self;
}
代わりself
をチェックする、私たちは書くことができます:
- (id)init
{
self = [super init];
[self doThis];
[self setFoo:@"Bar"];
return self;
}
を今すぐnil
を返し[super init]
何らかの理由で、何の違いもないならば方法の結果として私が知る限り。それでは、なぜこのチェックをいつも行っていますか?
これはむしろシグナルです.Cには例外がありません。 –
+1、素晴らしい答え。 –
これはC++例外ではなく、CPU例外です。 '/ usr/include/mach/exception_types.h'を見てください。 –