覚えたこと
nil にメッセージを送ると・・・
(p.40)
In Objective-C, it is okay to send a message tonil
. The message is simply discarded, which eliminates the need for these sort of checks.
Objective-C では nil にメッセージを送っても良い。単にメッセージが捨てられるだけ。エラーも例外も発生しない。C/C++/Java でおなじみの null チェックは不要だということ。
荻原(2.0)本だとp.62-63にかけて、このあたりの解説がある。ただ nil チェックを書かないことに関しては↓が著者の主張:
ただし、プログラムは簡単になりますが、「nil だった場合に何もしない」という意図が分かりにくくなることは確かです。従って、誤りが混入する危険性も高くなります。
これはおっしゃるとおり。プログラマはいつだって自らの意図をどうやってコードに込めようかと腐心しているのだから、意図を表現できる機会を減らすべきじゃない。っていうか、いろいろパターンを思い浮かべたけど「安全に nil チェックを省略できる」場合が出てこない。さらに、何も起こらないってことは nil にメッセージを送っているってこともわからないわけで、ヒレガス本の言う(p.40)ように「何でメッセージが届かないんだあ!!!」状態に陥りそう。
NSArrayには nil を入れられない
(p.44)
You cannot put a nil in an NSArray.
もちろん、NSMutableArrayでも同じ。これはちょっと意外だった。だから書き留めておく。で、nil が入れられない代わりに用意されたのが NSNull というクラス。使い方は↓
[myArray addObject:[NSNull null]];
さて、今日は p.54ぐらいまでで、時間切れ。夜が短いよ。
追記@2008-06-11:続きはこちら。
0 件のコメント:
コメントを投稿