zoukankan      html  css  js  c++  java
  • 第三条、多用字面量语法,少用与之等价的方法

    首先,当我们创建NSString对象时,Objective-C提供了非常简单的方式去创建NSString。这就是字符串字面量。语法如下:

    NSString *s = @"This is a test";

    如果不这样的话,那么我们需要alloc、init然后去创建了。

    -------------------------------------------------------------------------------------------------------------------------------------------

    还有NSNumber,用于存储整数浮点数,原来我们可能用:

    NSNumber *number = [NSNumber numberWithInt:1];

    现在我们可以直接:

    NSNumber *number = @1;

    -------------------------------------------------------------------------------------------------------------------------------------------

    NSArray,我们创建数组也许会这样:

    NSArray *arr = [NSArray arrayWithObjects:@"112",@"2323",@"str",nil];

    当我们使用字面量数组时:

    NSArray *animals = @[@"cat",@"dog",@"pig"];

    而且取数据也比较简单,原来我们取数据是:

    NSString *s = [arr objectAtIndex:1];

    当我们使用了字面量数组后,我们只需要:

    NSString *s = animals[1];

    取变得更加方便。但是需要注意:如果元素为nil,则会抛出异常

    其实他的效果就等同于先创建一个数组,然后将中括号里面的元素再添加进去。

    其实字面变量只是一种语法糖(也成糖衣语法:是指计算机语言中与另外一套语法等效但是使用起来更加方便的语法),下面是个有趣的问题

    比如有三个数据:

    id obj1 =

    id obj2 =

    id obj3 = 

    如果我们使用常规的方法

    NSArray *arr = [NSArray arrayWithObjects:obj1,obj2,obj3,nil];

    然后使用字面量数组:

    NSArray *arr= @[obj1,obj2,obj3];

    此时如果obj2为空,而其他两者不为空,那么对于我们常规创建的方法,数组中只有obj1,而对于字面量数组则会报错。常规创建只有obj1的原因是arrayWithOObjects方法会依次处理各个参数,直到发现nil为止。所以obj2是nil函数就执行结束了。

    -------------------------------------------------------------------------------------------------------------------------------------------

    字面量字典

    传统的创建方式可能是:

    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Scott",@"name",@"boy",@"gender",@"beijing",@"address",nil];

    如果使用字面量字典,创建方式如下:

    NSdictionary *dic = @{@"name":@"Scott",@"gender":@"boy",@"address":@"beijing"};

    与数组一样,一旦值为nil,便会抛出异常。

    同样的,原来的取方法为:

    NSString *gender = [dic objectForKey:@"gender"];

    现在我们只需要:

    NSString *gender = dic[@"gender"];

    当然也可以按照上面的取字面量字典的值。如果是可变的数组或者字典,可以采用下标来进行改变:

    mutalbeArr[1] = @"chicken";
    mutableDic[@"name"] = @"Scott Zhang";

    字面量变量就简单介绍这么多吧。

    -------------------------------------------------------------------------------------------------------------------------------------------

    总结:

    ①、一定要注意在字典或者数组的时候值为nil会抛出异常,一定要保证值不包含nil.

  • 相关阅读:
    python之路1:介绍和入门
    SpringMVC学习指南【笔记3】基于注解的控制器
    SpringMVC学习指南【笔记2】简介、校验器、配置
    SpringMVC学习指南【笔记1】创建bean实例的方法和依赖注入
    2018-12-18笔记
    elastic-job简介
    Java中由于数据太大自动转换成科学计数法解决方式
    Redis主从复制
    Redis数据类型
    Redis的基本命令
  • 原文地址:https://www.cnblogs.com/zhanggui/p/4761734.html
Copyright © 2011-2022 走看看