CocoaDesignPatternsの本を読んでいます。本では、変数を割り当てた後、以下のようになっているかどうかがselfチェックされますselfnil
if( nil != self){
// code
}
私はまた、自己をチェックする別の方法を見てきました
if( self ){
// code
}
これらの手法のいずれかを使用することにメリットはありますか、それとも単に好みの問題ですか?
ありがとう。
CocoaDesignPatternsの本を読んでいます。本では、変数を割り当てた後、以下のようになっているかどうかがselfチェックされますselfnil
if( nil != self){
// code
}
私はまた、自己をチェックする別の方法を見てきました
if( self ){
// code
}
これらの手法のいずれかを使用することにメリットはありますか、それとも単に好みの問題ですか?
ありがとう。
ifブロックの内容
if (expression) {
// contents...
}
expression評価がゼロ以外の値になった場合に備えて実行されます。
これは、次のifブロックのコードが
//the first if block
if (self) {
// contents....
}
selfがゼロ以外の場合は常に実行されます。
一方、この ifブロックの内容
// the second if block
if (self != nil) {
// contents...
}
self != nilがゼロ以外の場合は常に実行されます。
演算子は、2つの比較対象(この場合はと)が同一である場合に戻り!=、2つの比較対象が同一でない場合に戻ります。したがって、2番目のブロックのコードは、と同一でない場合は常に実行されます。0selfnil1ifselfnil
しかし、 dはにnilあります。したがって、2番目のブロックのコードは、と同一でない場合は常に実行されます。これは、最初のブロックのコードが実行されるのとまったく同じ時間です。ゼロ以外の場合はいつでも。#define0<objc/objc.h>ifself0ifself
2つのアプローチではまったく同じコードが実行されるため、どちらか一方を優先する技術的な理由はありません。この場合の最も重要な文体上の考慮事項は、初期化子の一貫性です。好みのスタイルを決めて、どこでも使用できます。