高效Objective-C语法-字面量语法
来源:互联网 发布:网络错误404是什么意思 编辑:程序博客网 时间:2024/06/06 17:58
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框架才行。如果自定义了这些类的子类,则无法用字面量语法创建其对象。
- 高效Objective-C语法-字面量语法
- Objective-C语法之字面量语法
- Objective-C字面量语法总结
- Objective-c中使用字面量语法
- Objective-C 中的字面量语法
- Objective-C字面量语法总结
- Effetive Objective - C 1.Objective 3.多用字面量语法
- 说说 Objective-C 里的 @()字面量语法
- 【IOS沉思录】Objective-C中的糖衣语法(字面量)
- Objective-C编写高质量代码 字面量语法
- Objective-C编写高质量代码 字面量语法
- Objective-c Literals语法(网上翻译为字面量,我称之为@语法 at符号语法)
- 字面量(笑笑语法)
- iOS字面量语法
- oc 字面量语法
- iOS 字面量语法
- 笑笑语法(字面量)
- 字面量 - 语法糖
- Gradle for Android 第六篇( 测试)
- PHP开发之读取照片EXIF中的经纬度位置信息
- 算法虐我千百遍,我待算法如初恋
- Python数据分析几个比较常用的方法
- bootstrapTable 搜索框和查询功能
- 高效Objective-C语法-字面量语法
- 全局变量的global的定义和使用
- 自学-java动态文件创建下载
- BlockingQueue
- Ajax传递数组的问题
- 第三方QQ登录
- 胜利大逃亡(续)
- linux根文件系统制作之busybox编译和系统构建
- android_weex安卓端页面跳转如果装几个weex项目会弹窗选择打开 问题解决