使用字面量语法,可以缩短源代码长度,使其更为易读
1. 字面数值
有时需要把整数,浮点数,布尔值封入 Object-C 对象中,这种情况下可以使用NSNumber类,该类可处理多种类型的数值,若不用字面量,那么就需要按下述方式创建实例:
NSNumber *someNumber = [NSNumber numberWithInt:1];
//使用字面量方式:
NSNumber *someNumber = @1;
//把其他类型实例成NSNumber 类型
NSNumber *doubleNumber = @3.1415;
NSNumber *boolNumner = @YES;
NSNumber *charNumber = @'a';
// 字面量语法适用于表达式
int x = 8;
float y = 0.3f;
NSNumber *expressionNumber = @(x * y);
2. 字面量数组
NSArray *animals = [NSArray arrayWithObjects:@"cat",@"dog",@"mouse",@"badger", nil];
// 字面量方式
NSArray *animals = @[@"cat",@"dog",@"mouse",@"badger"];
// 取某个下标对应的对象
NSString *dog = [animals objectAtIndex:1];
// 字面量方式
NSString *dog = animals[1];
使用字面量数组时如果某一项为nil 则会抛出异常。这比创建数组之后才发现少了元素要好,可以更快的发现这个错误。
3. 字面量字典
// 这种写法不容易读懂
NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:@"Matter",@"firstName",@"Galloway",@"lastName",@28,@"age", nil];
// 字面量字典创建 key:value
NSDictionary *personData = @{@"firstName" : @"Matter"
,@"lastName" : @"Galloway"
,@"age" : @28};
// 读取
NSString *lastName = [personData objectForKey:@"lastName"];
// 字面量方式读取
NSString *lastName = personData[@"lastName"];
4. 可变数组和字典
// 对于可变数组 替换其中的一个元素值
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithObjects:@"one",@"two", nil];
[mutableArray replaceObjectAtIndex:1 withObject:@"three"];
// 取下标操作
mutableArray[1] = @"three";
// 对于可变字典 替换其中的一个元素值
NSMutableDictionary *mutableDic =[[NSMutableDictionary alloc] initWithObjectsAndKeys:@"one",@"o",@"two",@"t", nil];
[mutableDic setObject:@"three" forKey:@"o"];
// 取下标操作
mutableDic[@"o"] = @"three";
要点:
应该使用字面量语法来创建字符串、数值、数组、字典。与创建此类对象的常规方法相比,这么做更加简明扼要。
应该通过取下标操作来访问数组下标或字典中的键所对应的元素
用字面量语法创建数组或字典时,若值中有nil , 则会抛出异常,因此,务必确保值里不含nil
原文。 Effective Objective-c 2.0