一、使用向前声明(@class)的好处

1、有效减少编译器编译的时间;

2、有效避免循环引用;

二、字面量语法的好处

1、字面常量

精简、可用于所有数据类型,如:

NSNumber *intNumber = @1;

NSNumber *floatNumber = @2.5f;

NSNumber *doubleNumber = @3.14159;

NSNumber *boolNumber = @YES;

NSNumber *charNumber = @'a';

2、字面量数组

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

NSString *dog = @[0];

需要注意的是,当用字面量语法创建的数组中的某一个对象为nil时,则会抛出异常,如:

id object1 = /*............*/;

id object2 = /*............*/;   (为nil)

id object3 = /*............*/;

NSArray *arrayA = [NSArray arrayWithObjects:object1, object2, object3, nil];

NSArray *arrayB = @[object1, object2, object3];

arrayA中只含有一个元素,因为arrayWithObjects:会依次处理各个参数,知道碰到nil为止,由于object2为nil,所以该方法会提前结束;

arrayB会抛出异常,便于代码审查;

3、字面量字典

NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:@"mark", @"name", [NSNumer numberWithInt:28], @"age", nil];<对象><键>

NSDictionary *personData = @{@"name":@"mark", @"age":@28};

如果遇到对象为nil,也会抛出异常;

4、可变数组与字典

[mutableArray replaceObjectAtIndex:1 withObjrct:@"dog"];

[mutableDictionary setObject:@"mark" forKey:@"name"];

对比:

mutableArray[1] = @"dog";

mutableDictionary[@"name"] = @"mark";

5、要点:

*应该使用字面量语法来创建字符串、字典、数组、数值,这样更加简明扼要;

*应该通过取下标操作访问数组下标或字典的键所对应的元素;

*用字面量语法创建字典或者数组时,若值中有nil,则会抛出异常。因此务必保证值中不含nil;

编写高质量iOS代码的52个有效方法1-1的更多相关文章

  1. 编写高质量iOS代码的52个有效方法2-1

    一.变量的定义位置(用{}声明示例变量或者用@property属性声明实例变量) 1.用{}声明示例变量: 此方法生命的实例变量,编译器在编译时,会自动计算其偏移量(表示该变量距离存放对象的内存区域的 ...

  2. 编写高质量JavaScript代码的68个有效方法

    简介: <Effective JavaScript:编写高质量JavaScript代码的68个有效方法>共分为7章,分别涵盖JavaScript的不同主题.第1章主要讲述最基本的主题,如版 ...

  3. Effective Python之编写高质量Python代码的59个有效方法

                                                         这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...

  4. 编写高质量JS代码的68个有效方法(八)

    [20141227]编写高质量JS代码的68个有效方法(八) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  5. 编写高质量JS代码的68个有效方法(七)

    [20141220]编写高质量JS代码的68个有效方法(七) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  6. 编写高质量JS代码的68个有效方法(六)

    [20141213]编写高质量JS代码的68个有效方法(六) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  7. 编写高质量JS代码的68个有效方法(四)

    [20141129]编写高质量JS代码的68个有效方法(四) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  8. 编写高质量JS代码的68个有效方法(三)

    [20141030]编写高质量JS代码的68个有效方法(三) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  9. 编写高质量JS代码的68个有效方法(二)

    [20141011]编写高质量JS代码的68个有效方法(二) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

随机推荐

  1. codewars-random(2)

    找出数组中的间谍 思路一:遍历一遍数组,开始前将flag设置为0:将count设为0:每当出现一个奇数(注意负数)count加1,当count大于等于2时将flag至为1: 再遍历一遍数组,如果fla ...

  2. OpenGL的状态机理解

    OpenGL是一种状态机模式,比如你用glEnable打开一个状态,在以后的绘图中将一直保留并应用这个状态,除非你调用glDisable及同类函数来改变该状态或程序退出.例如当前颜色是一个状态变量,可 ...

  3. Hadoop基本命令详解

    调用文件系统(FS)Shell命令应使用bin/hadoop fs <args>的形式.所有的的FS shell命令使用URI路径作为参数.URI路径详解点击这里. 1.cat 说明:将路 ...

  4. kali2.0 + LAMP

    0x01 更新源 leafpad /etc/apt/sources.list #中科大kali源 deb http://mirrors.ustc.edu.cn/kali sana main non-f ...

  5. 【NOIP2013】Day2不完全题解+代码

    T1 直接递归区间,从1-n开始,找到这个区间中的最小值然后将区间里的所有值都减去这个最小值 以被减去最小值之后的零点为分段分别递归处理即可. #include <algorithm> # ...

  6. 文档在线预览开源实现方案三:OpenOffice + PDFRenderer + js

    之前的方案无法很好地解决异构平台及不同浏览器的兼容性问题,如方案一需要客户端浏览器支持flash而移动端浏览器无法支持这点,虽然移动端浏览器支持方案二,但是一些老版本的IE浏览器无法支持,例如IE8就 ...

  7. HOJ———丢手绢

    hide handkerchief Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  8. web.xml讲解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "- ...

  9. tar命令结合find搜索将指定条件的文件进行打包压缩

    今天处理 /tmp 临时目录下 session 文件过多的问题,顺便找到了这个 tar 结合 find 打包压缩的方法,记录下来,很实用的哈! 搜索 /tmp 目录下 创建超过 24 分钟的文件 fi ...

  10. HDU 5868 Different Circle Permutation

    公式,矩阵快速幂,欧拉函数,乘法逆元. $an{s_n} = \frac{1}{n}\sum\limits_{d|n} {\left[ {phi(\frac{n}{d})×\left( {fib(d ...