私が見てきたコードは次のように:Objective-C:respondsToSelector :?の前にnilをチェックするのはなぜですか?
if (delegate != nil && [delegate respondsToSelector:@selector(doSomething)]) ...
しかし、nil
にメッセージを送信するだけで(NO
に評価される)nil
を返し、なぜだけでない。
if ([delegate respondsToSelector:@selector(doSomething)]) ...
が速く元ですif delegate == nil
?いずれにしても、後者のほうがコードが少ないからです。
less
は、more
より優れています。すべてのUnixプロがそれを知っています。
私は後者のものを使用する傾向があります。また、不要なnilチェックのコードをスキャンする傾向があります。 nilが傷ついていない場合は、チェックしないでください。もしnilがプログラミングミスであれば、それをチェックしないでください(代わりにアサーションを使用してください)。 – Eiko