OC中的NSString、NSNumber、NSArray、NSDictionary这几个类,在Objective-C 1.0起可以用一种非常简单的方式创建这些类的对象-“字面量语法”。
1.NSString的字面量语法如下:
1 | NSString *str = @"Objective-C"; |
2.NSNumber的字面量语法如下:
1 | NSNumber *num = @1; |
3.NSArray的字面量语法如下:
1 | NSArray *array = @[@1, @2, @3, @4]; |
4.NSDictionary的字面量语法如下:
1 | NSDictionary *dict = @{@"one": @1, @"two": @2}; |
为什么要说尽量用字面量语法呢?
首先语法更简洁了,这就不用说了。
然后就是另一个原因了:
首先执行下面代码:
1 | NSObject *obj1 = [NSObject new]; |
你会发现array中只有一个元素,为什么呢,因为obj2是空值arrayWithObjects方法会依次处理各个参数,直到发现nil为止,然而obj2是空值所以方法提前结束了。
下面是另一段代码:
1 | NSObject *obj1 = [NSObject new]; |
运行之后你就会发现异常了,这是因为字面量语法创建数组时如果有元素是空值会异常。
这就说明,字面量语法更加安全一些,因为这样可以使我们尽早发现这个错误,这时抛出的异常肯定比你以后去找数组为什么少个元素的省力多了。
最后,我们也可以用字面量来创建可变对象,只要copy一份,例如数组:
1 | NSMutableArray *mutableArray = [@[@1, @2, @3, @4] mutableCopy]; |
这样多调了一个方法,多创建一个对象,但是好处还是比缺点多的。