久々にOjb-Cいじってたら、OS X 10.8 Mountain Lionから、LLVMプロジェクトでObjective-Cでリテラル文字が使えるようになってた!
NSStringでの文字列生成
例えば、NSStringだと
NSString *myStr = [NSString stringWithString:@"Hello, World!"];
なんてやってたのが、
NSString *myStr = @"Hello, World!";
とするだけで文字列を生成できるようになっててびびった!
stringWithString や stringWithFormat すらもう必要ないんだね!
NSNumberでのリテラル
NSNumber もめっちゃ簡単!
// 従来: [NSNumber numberWithInt:1000] が NSNumber *num1 = @1000; // 従来: [NSNumber numberWithBool:YES] が NSNumber *b = @YES;
また、符号なし整数(Unsiged integer)、浮動小数点型(Float integer)などのメソッドも同じようにリテラル文字で簡単に生成できます。
// 従来: [NSNumber numberWithUnsignedInt:29U] が NSNumber *unsighnedInt = @29U; // 従来: [NSNumber numberWithFloat:3.14159F] が NSNumber *piAsFloat = @3.14159F; // 従来: [NSNumber numberWithDouble:3.1415926] が NSNumber *piAsDouble = @3.1415926;
それぞれの整数型は、リテラル文字の最後に以下の接尾辞を付けるだけです。
- U = unsigned integer
- L = long
- LL = long long
- F = float
NSArrayでのリテラル
NSArrayもこんなに簡単に!
// 従来の配列生成方法 NSArray *bandMembers = [NSArray arrayWithObjects:@"Marc", @"Chris", @"Richard", @"Benj", @"Jerry", nil]; // リテラル文字を使った配列の生成 NSArray *bandMembers = @[@"Marc", @"Chris", @"Richard", @"Benj", @"Jerry"];
配列の値を取り出すのも超簡単!
従来の [array objectAtIndex:n](n番目の値) メソッドなんてもう無用なの!
NSArray *bandMembers = @[@"Marc", @"Chris", @"Richard", @"Benj", @"Jerry"]; // "Richard" が出力される。 NSLog(@"%@", bandMembers[2]);
NSDictionaryでのリテラル
NSDictionary だってちょちょいのちょい!
キー名 と 値を[keyName : value]の形式に対にしてまとめるだけ!
// 従来の辞書生成方法 NSDictionary *bandMembers = [NSDictionary dictionaryWithObjectsAndKeys: @"lead singer", @"Marc", @"drummer", @"Chris", @"lead guitar", @"Richard", @"bass guitar", @"Benj", @"saxophonist", @"Jerry", nil]; // リテラルによる生成 NSDictionary *bandMembers = @{ @"lead singer": @"Marc", @"drummer": @"Chris", @"lead guitar": @"Richard", @"bass guitar": @"Benj", @"saxophonist": @"Jerry" };
ディクショナリーの値の取り出しはもちろん、キー名を使えばOK!
NSDictionary *bandMembers = @{ @"lead singer": @"Marc", @"drummer": @"Chris", @"lead guitar": @"Richard", @"bass guitar": @"Benj", @"saxophonist": @"Jerry" }; // "Richard" が出力される NSLog(@"%@", bandMembers[@"lead guitar"]);
もう慣れてしまえばどうってことなくなってましたが、いちいち長ったらしいObj-C独自の書式でインスタンスを生成せず、他の言語と同じようにこれらの変数が生成できるようになったのは、やっぱりコーディングが楽になるし、これからObj-Cを始める人にもちょとは敷居が下がっていいですね!
Comment On Facebook