理解字面量语法
很多人都知道字面量语法(literal syntax),一般用来申明NSNumber、NSArray、NSDictionary类的实例,可以缩减源代码长度,使其更为易读。
举几个例子:
- NSNumber *someNumber = @1;
- NSArray *fruit = @[@"apple",@"banana",@"pinch"];
- NSDictionary *someDic = @{@"name":@"Hugo",@"age":@27,@"phone":@"123456789"};
字面量的好处
- 数组类型可以进行取下标操作: NSString *apple = fruit[0];
- 字典类型可以进行取下标操作: NSString *myName = someDic[@"name"];
- 修改里面的值也一样: fruit[1] = @"pear"; someDic[@"age"]=@28;
- 最重要一个好处:
- 对于数组类型
NSArray arrayA = [NSArray arrayWithObject:object1, object2, object3, nil]; NSArray arrayB = @[object1, object2, object3];
大家想想:如果object1与object3都指向了有效的Objective-C对象,而object2是nil,那么会出现 什么情况呢?按字面量语法创建数组arrayB时会抛出异常。arrayA虽然能创建出来,但是其中却只含有 object1一个对象。原因在于,“arrayWithObjects:”方法会依次处理各个参数,直到发现nil为止,由 于object2是nil,所以该方法会提前结束。
这个微妙的差别表明,使用字面量语法更为安全。抛出异常令应用程序终止执行,这比创建好数组之后才发现元素个数少了要好。向数组中插入nil通常说明程序有错,而通过异常可以更快地发现这个错误。 - 对于字段类型也一样。
- 对于数组类型