字面量语法涉及到的类型有:express
NSString,NSNumber,NSArray,NSDictionary数组
如今先无论什么叫字面量语法,先来看一下怎么生成一个NSString类型对象并赋值到变量上:对象
NSString *someString = @"Jk_Chan";内存
能够看出这里的语法,直接使用@""即可以生成一个NSString对象,而不须要调用new或者alloc与init方法。字符串
一样的,NSNumber,NSArray,NSDictionary也可使用字面量语法来生成对象,简简单单。it
NSNumber *intNumber = @1;io
NSNumber *intNumber = @1.5;table
NSNumber *boolNumber = @YES;ast
NSNumber *charNumber = @'a';变量
NSNumber *expressionNumber = @(2 * 8);
NSArray *animals = @[@"cat", @"dog"];//不须要nil结尾
取数组元素的时候更方便:
NSString *dog = animals[1];
须要注意一点就是,使用字面量语法的时候放入的元素不能为nil,不然程序会崩溃,因此放入的时候须要确保放入的对象会不会是nil。
及时不使用字面量语法去初始化一个数组对象的时候,若是所放入的元素并非最后一个是nil,也就是中途的元素便出现nil,那么nil以后的那些元素不会被存入到该数组对象中。
NSDictionary *personData = @{@"firstName" : @"Matt", @"lastName" : @"Galloway", @"age" : @28};
取字典值:
NSString *lastName = personData[@"lastName"];
这里也须要说起一下,不管是否使用字面量语法,往字典内存放一个为nil的值也会使程序奔溃。
可变版本数组与字典操做元素:
mutableArray[1] = @"dog";
mutableDictionary[@"lastName"] = @"Galloway";
这里还有一点值得注意的就是:
使用字面量语法建立出来的字符串,数组,字典对象都是不可变的,若想生成可变版本,则须要复制一份,而且是应该使用mutableCopy:
NSMutableArray *mutable = [@[@1, @2, @3] mutableCopy];
最后来抄一下书本的要点:
应该使用字面量语法来建立字符串,数值,数组,字典。与建立此类对象的常规方法相比,这么作更加简明扼要。
应该经过去下标操做来访问数组下标或字典中的键所对应的元素。
用字面量语法建立数组或字典时,若值中有nil,则会抛出异常。所以,务必确保值里不含nil。