OC中,为了简化NSNumber、NSArray、NSDictionary的使用,以及提高程序的可读性(代码长度),有一些常用的字面量语法:
NSNumber
当需要把整数、浮点数、布尔值封装入OC对象中时,可以用NSNumber类。
如果不使用字面量语法,用以下方式创建:
int aInt = 1;
NSNumber *aNumber = [NSNumber numberWithInt:aInt];
如果食用字面量语法,可以简化为:
int aInt = 1;
NSNumber *aNumber = @(aInt);
如果是常量:
NSNumber *aNumber = @1;
能够以NSSNumber实例表示的所有数据类型都可以使用该语法。
NSArray
如果不使用字面量语法,用以下代码创建和获取数组元素:
NSArray *anArray = [NSArray arrayWithObjects:@"aaa",@"bbb", nil];
NSString *aaa = [anArray objectAtIndex:0];
使用字面量语法,可以简化为:
NSArray *anArray = @[@"aaa",@"bbb"];
NSString *aaa = anArray[0];
使用字面量语法获取数组元素有一个好处就是,如果数组元素中有nil,就会抛出异常,这比创建好数组之后才发现元素个数少了要好很多,可以快速地发现问题。
NSDictionary
如果不使用字面量语法,用以下代码创建和获取字典中的元素:
NSDictionary *anDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"key1",@"aaa",@"key2",@"bbb", nil];
NSString *aaa = [anDictionary objectForKey:@"key1"];
使用字面量语法,可以简化为:
NSDictionary *anDictionary = @{@"key1":@"aaa",@"key2":@"bbb"};
NSString *aaa = anDictionary[@"key1"];
同样的字面量语法创建时也是不能用nil的。
NSMutableArray
对于NSMutableArray,创建时不能使用字面语法,但是如果要替换某个元素,可以用:
aMutableArray[0]=@"123";
来代替:
[aMutableArray replaceObjectAtIndex:0 withObject:@"123"];
NSMutableDictionary
对于NSMutableDictionary,创建时不能使用字面语法,但是如果要新增一个元素,可以用:
anMutableDictionary[@"key3"] = @"ccc";
来替代
[anMutableDictionary setObject:@"ccc" forKey:@"key3"];