字面量可以不用使用 [[Class alloc]init] 分配并初始化NSString对象了
1. 字面数值
- NSNumber* someNumber = @1;
- NSNumber* intNumber = @1;
- NSNumber* floatNumber = @2.5f;
- NSNumber* doubleNumber = @3.1415926;
- NSNumber* boolNumber = @YES;
- NSNumber* charNumber = @’a’;
字面数值也适用于下述表达式
int x = 5;
float y = 6.32f;
NSNumber *expressionNumber = @(x * y);
2. 字面量数组
NSArray *animal = [NSArray arrayWithObjects:@“cat”, @“dog”, @“mouse”, @“badger”, nil];
使用字面量
NSArray *animal = @[@“cat”, @“dog”, @“mouse”, @“badger”];
使用字面量可以使用下标
NSString* dog = animals[1];
注:用字面量语法创建数组时要注意,若数组元素对象中有nil,则会抛出异常。
如果不适用字面量创建数组会略掉nil以后的数组元素。
3. 字面量字典
一般定义字典时采用<对象><键>添加元素
NSDicationary *personData = [NSDictionary dictionaryWithObjectsAndKeys:
@“Matt”, @“firstName”, @“Galloway”, @“lastName”, [NSNumber numberWithInt:28], @“age”, nil ];
使用字面量:
NSDicationary *personData = @{@“firstName”:@”Matt”, @“lastName”:@“Galloway”, @“age”: @28};
适用下标(可以读)
NSString* lastName = personData[@“lastName"];
注:因为字典中的对象和键必须都是OC对象,所以不能把整数28直接放进去,但是适用字面量可以轻松实现这一点。另一点好处同字面量数组相同。
4. 可变数组和字典
通过取下标操作,可以访问数组中某个下标或字典中某个键所对应的元素。如果数组与字典对象是可变的,那么可以通过下标修改其中的元素值。
5. 局限性
使用字面量创建出来的字符串、数组、字典对象都是不可变的。若想使用可变版本对象,需要复制一份。
NSMutableArray *mutable = [@[@1, @2, @3, @4, @5] mutableCopy];