第3条:多用字面量语法,少用与之等价的方法
1. 字面数值
使用字面量能令代码更为简洁:
NSNumber *someNumber = @1;
*** 字面量语法的好处! ***
- 令代码更为简洁。
- 能够以NSNumber实例表示的所有数据类型(int、float、double、Bool和char)都可以使用字面量语法。
- 字面量语法同样适用于算法表达式。
2. 字面量数组
*** 使用字面量数组的优势! ***
- 写法简单,而且还利于操作数组。
- 用字面量语法创建数组要注意,若数组元素对象中有nil,则会抛出异常。
- 使用字面量语法更为安全(抛出异常令应用程序终止执行,通过异常可以更快地发现错误)。
3. 字面量字典
*** 使用字面量字典的优势! ***
- 写法更简明,而且键出现在对象之前,理解起来较顺畅。
- 与数组一样,用字面量语法创建字典时也有个问题:一旦有值为nil,便会抛出异常。
- 字典也可以像数组的取下标操作那样访问某个键所对应的元素。
4. 可变数组与字典
如果数组与字典对象是可变的,那么久能通过下标修改其中的元素值。
5. 局限性
- 除了NSString类之外,所创建出来的对象必须属于Foundation框架中的类才行。如果自定义了这些类的子类,则无法用字面量语法创建其对象。要想创建自定义子类的实例,必须采用“非字面量语法”。
例如,NSArray、NSDictionary、NSNumber都是业已定型的“子族”,因此很少有人会从其中自定义子类;创建字符串时可以使用NSString自定义的子类,然而必须要修改编译器的选项才行。 - 使用字面量语法创建出来的字符串、数组、字典对象都是不可变。若想要可变版本的对象,则需复制一份(需要调用mutableCopy方法,再创建出一个新的对象)。
要点
- 应该使用字面量语法来创建字符串、数值、数组、字典。与创建此类对象的常规方法相比,这么做更加简明扼要。
- 应该通过取下标操作来访问数组下标或字典中的键所对应的元素。
- 用字面量语法创建数组或字典时,若值中有nil,则会抛出异常。因此,务必确保值里不含nil。