3 - 多用字面量语法,少用与之等价的方法

字面量语法涉及到的类型有:

NSString,NSNumber,NSArray,NSDictionary

现在先不管什么叫字面量语法,先来看一下怎么生成一个NSString类型对象并赋值到变量上:

NSString *someString = @"Jk_Chan";

可以看出这里的语法,直接使用@""便可以生成一个NSString对象,而不需要调用new或者alloc与init方法。

同样的,NSNumber,NSArray,NSDictionary也可以使用字面量语法来生成对象,简简单单。

NSNumber *intNumber = @1;

NSNumber *intNumber = @1.5;

NSNumber *boolNumber = @YES;

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。

 

posted @ 2016-03-14 15:09  Jk_Chan  阅读(128)  评论(0编辑  收藏  举报