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