[iOS] 秋ぐらいに出る?らしいXcode4.5でコードを少し短くかけるみたい

2012/07/17

2012/07/27追記
記事のつづきを書きました
>> [iOS] iOS5以下 + Xcode4.4でもObjective-Cの新シンタックスで配列、辞書の値を取得したい

以下、元の記事です

こんにちは。きんくまです。

この間本屋でパラパラと立ち読みしてたら、もうすぐObjective-Cで短縮系の書き方がいくつかできるようになるらしいと書いてあった。

たしかこの本のコラムだったような。ちゃんと見てないので違ってたらスミマセン。
>> 楽しみながら作ってみよう! はじめてのiPhoneアプリプログラミング

調べてみると、具体的なコードとしてはここのページに書いてあります。

>> Objective-C Literals

上のページからいくつか抜き出してみます。

数値だと

NSNumber *fortyTwo = @42; //これを書くのと同じ[NSNumber numberWithInt:42]
NSNumber *piFloat = @3.141592654F;   //これと同じ [NSNumber numberWithFloat:3.141592654F]
NSNumber *yesNumber = @YES;           //これと同じ [NSNumber numberWithBool:YES]

文字列のNSString *name = @”Taro” みたいな感じでやっておけば、
あとはLLVMコンパイラーくんが勝手にいい感じに変換してくれるみたいです。

これは便利です!

配列と辞書の定義

NSArray *array = @[ @"Hello", NSApp, [NSNumber numberWithInt:42] ];
NSDictionary *dictionary = @{
    @"name" : NSUserName(),
    @"date" : [NSDate date],
    @"processInfo" : [NSProcessInfo processInfo]
};

配列と辞書にアクセス

NSMutableArray *array = ...;
NSUInteger idx = ...;
id newObject = ...;
id oldObject = array[idx];
array[idx] = newObject;		    // replace oldObject with newObject

NSMutableDictionary *dictionary = ...;
NSString *key = ...;
oldObject = dictionary[key];
dictionary[key] = newObject;	// replace oldObject with newObject

objectAtIndexとかobjectForKeyとか書かなくてよくなる!
こう書けるとAS, JSとほぼ同じ感覚になるので、良い感じ。
特に、デフォルトは辞書の宣言がありえないぐらい長いっていうか、メンドクサイ書き方なのでありがたいです。

AS / JSとか、言語としての孫世代っていうか、後の世代の言語を書いているとその便利さに気がつかなかったのですが、
自分で書いているコードの裏では実際にはこういうことを自動でやってくれてるんだなあと思いました。

それで、じゃあこれいつからこうやって書けるようになるのよ?ということを調べてみると、
秋に出るらしいiOS6とセットのXcode4.5からみたいです。

>> Using new Objective-C literals

ただXcode4.5はまだプレビュー版で、Dev Centerでダウンロードして試すことは可能なのですが、それを使ってアプリの申請はできないです。
なので、秋まで気長に待ちます。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

LINEスタンプ作りました!
毎日使える。とぼけたウサギ。LINEスタンプ販売中! 毎日使える。とぼけたウサギ

ページトップへ戻る