What’s New in LLVM4
Literals
与 NSString 一样,NSNumber, NSArray, NSDictionary 都使用 @ 创建不可变的实例并赋值。
NSNumber *myNumber = @3;
NSNumber *yesValue = @YES;
NSNumber *valueOfPi = @3.14F;
NSNumber *radius = @3U // declaring a unsigned integer
NSArray *myArray = @[str1, str2, str3];
NSDictionary *dictionary = @{@"key1":@"value1",
@"key2":@"value2"};
下标访问
C/C++ 中数组支持下标访问
int a[5] = {1,2,3,4,5};
int v = a[0];
LLVM 4 NSArray, NSDictionary 同样支持下标访问。
NSString *str = myArray[0];
NSString *value = dictionary[@"key1"];
Auto synthesis of instance variables
@synthesize moviePlayer = _moviePlayer;
上面代码将由 LLVM 4 编译时,自动生成,无需手动编写了。
KVC 使用的方法 setValue:forKey: 在不存在 key ivar 时,将设置 _key ivar 的值。为防止只读属性被其修改,需要显示声明
@synthesize moviePlayer = __moviePlayer;
Core data 中延迟加载的属性增加了 “__” 的前缀。