ios 6 采用了新的编译器LLVM 4.0, 其中带来了一些objc语法方便的小改变。
在生成string 时, 我们在objc 常使用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作为实例变量。但是如果你自己实现了setter和getter,就需要手动加上synthesize
来源:oschina
链接:https://my.oschina.net/u/566401/blog/115342