なぜ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でとうとう——おや、誰か来たようなので今日はこれにて。