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

1、使用字面量方法来创建字符串、数值、数组、字典,与创建此类对象的常规方法相比,这么做更加简明扼要

NSString *someString = [NSString stringWithFormat:@"%@", string];
NSString *someString = @"string";

NSSNumber *someNumber = [NSNumber numberWithInt:1];
NSSNumber *someNumber = @1;

NSArray *animals = [NSArray arrayWithObjects:@"cat", @"dot", nil];
NSArray *animals = @[@"cat", @"dot"];

NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:@"Zhou", @"firstName", @"Hua", @"lastName", [NSNumber numberWithInt:28], @"age", nil];
NSDictionary *personData = @{ @"firstName": @"Zhou",  @"lastName": @"Hua",  @"age": @28};

2、应该通过取下标操作来访问数组下标或字典中的键说对应的元素

NSString *dog = animals[1];

3、用字面量语法创建数组或字典时,若之中有nil,这会抛出异常。因此务必确保值里不含nil

使用字面量语法创建数组时要注意,若数组元素对象中有nil,则会抛出异常,因为字面量语法实际上只是一种“语法糖”,其效果等于是先创建了一个数组,然后把方括号内的所有对象都加到这个数组中。

有如下代码

id object1;
id object2;
id object3;
NSArray *arrayA  = [NSArray arrayWithObjects:object1, objec2, object3, nil];  
NSArray *arrayB = @[object1, objec2, object3];

如果object1和object3都指向了有效的对象,object2是nil,那么会出现什么情况呢?按字面量语法创建,数组B会抛出异常,arrayA虽然能创建出来,但是其中却支行object1一个对象,原因在于“arrayWithObjects:”方法会依次处理各个参数,直到发现nil为止,由于object2是nil,所以该方法会提前结束。
字典也是同样的,使用“dictionaryWithObjectsAndKeys:”方法就会在首个nil之前停下

如果是可变数组的创建可用如下方法

NSMutableArray *mutable = [@[@1, @2, @3] mutableCopy];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容