2008-06-05

[ヒレガス本]Chapter 3. Objective-C

覚えたこと

nil にメッセージを送ると・・・

(p.40)
In Objective-C, it is okay to send a message to nil. 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 件のコメント:

コメントを投稿