LoginSignup
1
1

More than 5 years have passed since last update.

役に立たない奇妙なTips

Last updated at Posted at 2013-05-11

多分殆ど役に立たないけれど、ごく希に有効なケースと、挙動の把握に必要かも知れない不思議なコード。

知っている人には当たり前のことかも知れないけれど、

sample.m
id nullObject = [[nil alloc] init];
NSLog(@"%@", nullObject);

なんてことをやると、

result
DocTest[31390:303] (null)

が帰ってくる。

どう使うか?

当然、これは単体では役に立たない。
しかし、ちょっと考えると、

sample2.m
Class klass = nil;
switch (condition) {
    case a:
        klass = [MyClass1 class];
        break;
    case b:
        klass = [MyClass2 class];
        break;
    default:
        klass = nil;    // なくても良い
        break;
}// end case by condition

id instance = [[klass alloc] init];
        // 以下適切な処理を

などしてやると、nilに対するメッセージは何も起きないので、例外はノーアクションで良いコーディングの時には使えるかも知れない。

しかしやっぱり

元々気持ち悪い言語だけど、ここまで奇抜なことが出来るとは思わなかった。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1