ios 6 采用了新的编译器LLVM 4.0, 其中带来了一些obj-c语法方便的小改变。
在生命string 时, 我们在obj-c 常使用NSString *s = @"string"; 使得创建string十分方便。
在ios 6我们可以使用类似的语法来声明NSNumber, NSArray, NSDictionary,从而使代码更简洁。
NSNumber写法变化
之前声明NSNuumber的写法:
- NSNumber *n = [NSNumber numberWithInt:3];
- NSNumber *yesValue = [NSNumber numberWithBOOL:YES];
LLVM 4.0 写法:
- NSNumber *n = @3;
- NSNumber *yesValue = @YES ;
- NSNumber *pi = @3.14F //默认为double,加F后为float
- NSNumber *r = @3U //默认为有符号整型,加U后为无符号整型
NSArray和NSDictionary写法变化
之前创建NSArray写法:
- NSString *str1 = @"1";
- NSString *str2 = @"2";
- NSString *str3 = @"3";
- NSArray *myArray1 = [NSArray arrayWithObjects:str1,str2,str3,nil];
LLVM 4.0写法:
- NSArray *myArray2 = @[str1,str2,str3];
- NSDictionary *d = @[@"key1":@"value1",@"key2":@"value2",@"key3":@"value3"];
获取NSArray和NSDictionary中的数据
之前的方式是objectAtIndexOf 和 objectForKey,
LLVM 4.0:
- NSArray *arrayOfIntegers = @[@1 ,@2,@3];
- int i = arrayOfIntegers[1];
- NSDictionary *d = @[@"key1":@"value1",@"key2":@"value2",@"key3":@"value3"];
- int e = d[@"key1"];
在ios 5 时,定义property自己要手动@synthesize p = _p;
而LLVM 4.0 则不需要写 = _p。编译器默认生成_p作为实例变量。