「今日からライオンでも使える!XCODE4.4 MODERN OBJECTIVE-C SYNTAXでコードをきれいにする方法」を参考に、早速試してみました。 ---2012/09/06追記 参考:Objective-C Literals
@property で宣言した変数は、自動的に @synthesizeをコード補完してくれます。
@property (nonatomic) NSString *name;
@property (nonatomic) float time;
... @synthesize がいらない ...
- (void)bind {
_name = @"Mike";
_time = 10.0f;
}
これは省略もそうですが、コードの統一感という点で非常に大きな意味があると思います。 今までだと、アンダースコアをつけなかったり適当にコーディングできましたから。
NSArray は @[...] で、NSMutableArray は [@[...], mutableCopy] で記述
@property (nonatomic) NSString *name;
@property (nonatomic) float time;
- (void)bind {
NSArray *values1 = @[
@"1_setting01.png",
@"1_setting02.png",
@"1_setting03.png",
@"1_setting04.png",
];
NSMutableArray *values2 = [@[
@"1_setting01.png",
@"1_setting02.png",
@"1_setting03.png",
@"1_setting04.png",
]
mutableCopy];
}
---2012/09/06追記 Object Subscripting ってのが追加されているようです。 今まで、NSArray や NSDictionary ではのキーによるデータ取得はC言語のような(?)記述では取得できませんでしたが、これもできるようになりました。
int cArray[] = { 100, 200, 300 };
NSArray *nsArray = @[ @100, @200, @300 ];
cArray[1]; // 200
nsArray[1]; // @200
NSMutableArray *nsArray = [@[ @100, @200, @300 ] mutableCopy];
nsarray[1] = @33;
これは、かなり嬉しい構文ではないでしょうか?
int,float を NSNumber に変換とか、リテラル値の変換を省略できるようになりました。
- (void)update:(int)score :(float)time {
NSMutableDictionary *value = [NSMutableDictionary dictionary];
[value setValue:@(score) forKey:@"score"];
[value setValue:@(time) forKey:@"time"];
}
さらに、NSMutableDictionary を省略すると
- (void)update:(int)score :(float)time {
NSMutableDictionary *test = [@{@"score":@(score), @"time":@(time)} mutableCopy];
}