Objective-Cリテラル

写経しかけのヒレガス本を読了。

Objective-C プログラミング

Objective-C プログラミング

  • 作者: Aaron Hillegass,アーロン・ヒレガス,堂阪真司
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2012/09/28
  • メディア: 単行本(ソフトカバー)
  • 購入: 1人 クリック: 8回
  • この商品を含むブログ (4件) を見る
内容は基礎ですが、block、カテゴリ、propertyなどしっかり書かれています。
おすすめです。

Xcode4.4のObjective-Cリテラル

後半におまけ的に記載されていた
Xcode4.4のObjective-Cリテラルについて(今更ですが)。
LLVMコンパイラ4.0によって以下の機能を実現。
rubyっぽく書けるようになって嬉しい。

NSArray
# Xcode4.3
NSArray *colors = [NSArray arrayWithObjects: @"Orange", @"Yellow", @"Green", nil];

# Xcode4.4以降
NSArray *colors = @[@"Orange", @"Yellow", @"Green"]; // nilは不要
NSDictionary
# 4.3
    NSArray* titles = [NSArray arrayWithObjects:@"CEO", @"CTO", nil];
    NSArray* persons = [NSArray arrayWithObjects:firstPerson, secondPerson, nil];
NSDictionary * executives = [NSDictionary dictionaryWithObjects:persons forKeys:titles];

# 4.4以降
NSDictionary *executives = @{@"CEO" :firstPerson,
                             @"CTO" :secondPerson};
NSNumber
# 4.3
NSNumber *number = [NSNumber numberWithInt:4];

# 4.4以降
NSNumber *number = @4;

# 4.4以降
# 式の評価結果をNSNumberリテラルとする
NSNumber *number = @(1+2);
NSString

C言語文字列からNSStringへの変換(UTF-8, ASCIIのみ)

# 4.3
NSString *x = [NSString stringWithCString:greeting
                                  encoding:NSUTF8StringEncoding];

# 4.4以降
NSString *x = @(greeting);

コンテナの添字指定

NSArray/NSMutableArray
# 4.3
NSDate *date = [dateList objectAtIndex:0];
[dateList replaceObjectAtIndex:0 withObject:now];

# 4.4以降
NSDate *date = dateList[0];
dateList[0] = now;
NSDictionary/NSMutableDictionary
# 4.3
NSString *symbol = [stocks objectForKey:@"symbol"];
[stock setObject:@"AAPL" forKey:@"symbol"];

# 4.4以降
NSString *symbol = stocks[@"symbol"];
stocks[@"symbol"] = @"AAPL";