通过字面量语法我们可以缩减源代码长度,使其更为易读。
1.字面数值
实例:
NSNumber *someNumber = [NSNumber numberWithInt:1];
使用字面量语法更为精简:
NSNumber *intNumber = @1;
NSNumber *floatNumber = @2.5f;
NSNumber *doubleNumber = @1;
NSNumber *boolNumber = @YES;
NSNumber *charNumber = @'a';
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];
下面是可能遇到的问题。下面这段代码分别以两种语法创建数组:
id object1 = /*...*/;
id object2 = /*...*/;
id object3 = /*...*/;
NSArray *arrayA = [NSArray arrayWithObjects:object1, object2, object3,nil];
NSArray *arrayB = @[object1, object2, object3];
如果object2是nil,arrayA会创建出来对象然后再报错,arrayB就直接报错了,所以使用字面量语言更为安全。
3.字面量字典
以下原来的方法就不写了,直接写字面量的语法。
NSDictionary *personData = @{@"firsName":@"ajie",@"age",@28}
在字典中使用NSNumber直接前面加@字符即可。
访问值:
NSString *firsName = personData [@"firsName"];
4.可变数组与字典
可变数组和字典内容的修改
mutableArray[1] = @"dog";
mutableDictionary[@"firstName"] = @"ajie";
局限性
字面量语法创建的对象都是不可变的。若要可变的对象,则需复制一份:
NSMutableArray * mutable = [@[@1, @2, @3] mutableCopy];
这个知识点参考了《Effective Objective-C 2.0》