Lonely lastObject.

なぜlastがあってfirstがないのか。

それはNSArray最大の謎である。

 

- (id)lastObject;

 

誰だって1回くらいは使ったことがあるかもしれないこのメソッド、

対になるものがないので、どうもしっくりこないと個人的に前々から思ってたりした。

もし、自分でAPIを設計したならきっとfirstObjectも一緒に追加する(または、どっちも追加しない)。


わざわざ配列の要素数を取得してIndexで最後の要素にアクセスするのは面倒だから、とか

LIFOだろ、分かれよ、とか、lastObjectだけがある理由はあれこれ想像できる。

サブスクリプティングが使えるようになって、-objectAtIndex: を使わずとも良くなったのでfistObjectがないことによる不満もだいぶなくなりつつはある。


だが、しかし。

それでも firstObject が欲しい!!(使わないかもしれないけど)

 

——などど心の中で叫んでたら、もうあった。

 

NSArray *array = @[ @"kiwi", @"lemon", @"mango" ];
NSString *first = [array performSelector:@selector(firstObject)];
NSLog(@"first=%@", first);

 

publicになってないだけでprivateなメソッドとしては存在していた模様(OS10.8, iOS6で確認)。

存在してはいるものの、このまま使うとリジェクトされるし、コードの量も増えるし良いことは何もない。

それでも、lastObjectの相方が見つかってちょっとだけすっきりした。

 

そんな忍者みたいに潜んでいたfirstObject、今度のOS7でとうとう——おや、誰か来たようなので今日はこれにて。