高效Objective-C语法-字面量语法
2017-04-18 11:11
183 查看
NSString对象
从Objective-C 1.0开始,有一种简单的方式能创建NSString对象,这就是”字符串字面量”,语法如下:NSString *str = @"hello word!";
如果不用这种语法的话,就要使用常见的alloc和init来分配并初始化NSString对象。使用字面量语法能够缩短源代码长度,使其更为易读。
字面数值NSNumber
有时候需要将整数,浮点数,布尔变量存入Objective-C对象中。这种情况下可以使用NSNumber类,该类可以处理多种类型的变量。如果不用字面量,那就需要使用如下方法:NSNumber *num = [NSNumber numberWithInt:1];
然而使用字面量语法,则更为简洁:
NSNumber *intNum = @1; NSNumber *floatNum = @1.75f; NSNumber *doubleNum = @3.1415926; NSNumber *boolNum = @YES; NSNumber *charNum = @'a';
字面量同时也适用如下表达式:
int a = 2; float b = 3.5f; NSNumber *expressionNum = @(a * b);
这样做让NSNumber对象变得整洁,因为声明中只包含数值,而没有多余的语法成分。
字面量数组NSArray
数组是常用的数据结构。如果不使用字面量,那么就要这么来创建数组:NSArray *array = [NSArray arrayWithObjects:@"dog",@"cat",nil];
而使用字面量语法来创建的话,则是
NSArray *array =@[@"dog",@"cat"];
上面的做法不仅简单,还利于操作数组。例如:
NSString *dog = [array objectAtIndex:0];
若使用字面量,则是:
NSString *dog = array[0];
这也叫作”取下标”操作。不过,用字面量语法创建数组时要注意,若数组元素对象中有nil,则会抛出异常,因为字面量语法实际上是一种”语法糖”,其效果等于先创建了一个数组,然后把方括号内的所有对象都加到这个数组。看一组例子:
id object1 = @"123"; id object2 = nil; id object3 = @"456"; NSArray *arrayA = [NSArray arrayWithObjects:object1,object2,object3,nil]; NSArray *arrayB = @[object1,object2,object3];
按照字面量语法,arrayB会抛出异常,而arrayA虽然能创建数组,但是数组中只有object1一个对象,原因是arrayWithObjects:会依次处理各个参数,直到发现nil为止,由于object2是nil,所以该方法会提前结束。
这个微妙的差别表明,使用字面量语法更为安全。抛出异常令程序终止,这比创建好数组,才发现数组中元素个数少了要好。
字面量字典NSDictronary
字典的标准创建方法如下:NSDictronary *dic = [NSDictronary dictronaryWithObjectsAnyKeys:@"Mary",@"firstName" , @"Gally",@"lastName", [NSNumber numberWithInt:28],@"age", nil];
这样写就令人困惑了,<对象>,<键>这与通常理解的顺序相反。因此,这样的语法不容易读懂。如果改为字面量语法,就好多了。
NSDictronary *dic = @{@"firstName",@"Mary", @"lastName",@"Gally", @"age",@28};
这样理解就顺畅多了,代码也比较简洁。
与数组存在的问题一致,那就是一旦有nil值存在,就会抛出异常,原理与数组一致。
字典也可以像数组那样用字面量语法访问。传统做法是:
NSString *lastName = [dic objectForKey:@"lastName"];
与之等效的字面量语法是:
NSString *lastName = dic[@"lastName"];
代码简单易读。
小结
字面量有个小小的限制,就是除了字符串以外,所创建出来的对象必须是Founcation框架才行。如果自定义了这些类的子类,则无法用字面量语法创建其对象。相关文章推荐
- ios高效开发-使用字面量语法让iOS代码更简洁漂亮
- 【IOS沉思录】Objective-C中的糖衣语法(字面量)
- Objective-C编写高质量代码 字面量语法
- Objective-c中使用字面量语法
- iOS 高级开发技巧 1.熟悉Objective-C (三) 多用字面量语法
- Effective Objective-C 2.0 第3条:多用字面量语法,少用与之等价的方法
- Objective-c Literals语法(网上翻译为字面量,我称之为@语法 at符号语法)
- 说说 Objective-C 里的 @()字面量语法
- Objective-C编写高质量代码 字面量语法
- iOS高效开发必备的10款Objective-C类库
- Objective - C - 字面量(Literals)整理
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
- iOS高效开发必备的10款Objective-C类库
- iOS开发之Objective-C语法之词典对象
- ArcGIS Runtime SDK for iOS开发系列教程(0)——PPT分享(iOS历史、Objective-C语法、SDK介绍)
- Objective-C 基础语法log打印那些事儿(一)
- 10款iOS高效开发必备的Objective-C类库
- iOS高效开发必备的10款Objective-C类库
- Objective-C语法-字典NSDictionary和可变字典NSMutableDictionary
- 10款iOS高效开发必备的Objective-C类库