Objective-C 中的字面量语法

前言:自己总结的一些关于OC中点面量语法的东东!有不对的地方希望大神们能指出来改正。

点面量语法是自Objective-C 1.0推出的能够以很简单方式创建数据对象的语法。
例如:下面快速简便创建的NSString对象,就是“字符串字面量(string literal)” 。
NSString *string = @"Objective-C";
等同  
NSString *string = [[NSString alloc] initWithString:@"Objective-C"];

下面我会介绍点面量语法在Objective-C中常见的几种用法。

1. 字面数值

    // 字符型
    + (NSNumber *)numberWithChar:(char)value;
    NSNumber *charNumber = @'a';
    // 整型
    + (NSNumber *)numberWithInt:(int)value;
    NSNumber *intNumber = @100;
    // 浮点型
    + (NSNumber *)numberWithFloat:(float)value;
    NSNumber *floatNumber = @3.14f;
    // 双浮点型
    + (NSNumber *)numberWithDouble:(double)value;
    NSNumber *doubleNumber = @3.14159;
    // BOOL类型
    + (NSNumber *)numberWithBool:(BOOL)value;
    NSNumber *boolNumber = @YES;

字面量语法同样适用于表达式:

    int num1 = 5;
    float num2 = 4.66f;
    NSNumber *sumNumber = @(num1 * num2);

    ---------------------------------------------------
    运行结果
    2015-09-12 13:18:34.778 NSNumber[2041:365020] 23.3

字面量表示数值,非常有用,既能简化代码,更能令NSNuber对象整洁,易读。

2.字面量数组

2.1 数组创建:
    常用创建数组的方式是这样:
    NSArray *array1 = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil];
    或者这样
    NSArray *array2 = [[NSArray  arrayWithObjects:@"1", @"2", @"3", nil];
    // 而字面量语法创建数组是这样:
    NSArray *array3 = @[@"1", @"2", @"3"];
2.2 数组元素的读取

点面量语法不仅在创建是可以使用,当需要取出某个下标对应的对象时:

    // 常见的读取方法是:
    NSString *three = [array3 objectAtIndex:2];
    // 等效的字面量语法:
    NSString *three = array3[2];
注意:
使用字面量语法创建数组时,若数据元素对象中有nil,会报异常。因为字面量语法实际上是一种 “语法糖” 。
    NSArray *array1 = [NSArray arrayWithObjects:@"object1", nil, @"object3", nil];
    NSArray *array2 = @[@"object1", nil, @"object3"];
上面创建的两个数组,array1中,第二个对象为nil,即空,不会抛出异常,但存入数据时只能存储"object1",方法遇到nil时会自动停止,方法提前结束。而字面量创建的array2会立即抛出异常。从例子中可以感觉到,字面量语法更加安全。能更快的发现错误。

3.字面量词典

3.1 字典的创建
    // 常见的字典创建方式:数据输入为 <对象><键><对象><键>
    NSDictionary *humanData = [NSDictionary dictionaryWithObjectsAndKeys:@"张三", @"name", [NSNumber numberWithInt:25], @"age", nil];
    // 字面量语法创建字典: <键><对象> 的方式
    NSDictionary *humanData = @{@"name" : @"张三", @"age" : @23};
3.2 字典读取
    // 常规的通过键值访问对应对象
    NSString *name = [humanData objectForKey:@"name"];
    // 等效的字面量语法:
    NSString *name = humanData[@"name"];
3.3 可变字典值修改
    // 常规的通过键值修改对象
    [mutableData setObject:@"李四" forKey:@"name"];
    // 等效的字面量语法
    mutableData[@"name"] = @"李四";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值