编写高质量iOS代码的52个有效方法1-1
一、使用向前声明(@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的更多相关文章
- 编写高质量iOS代码的52个有效方法2-1
一.变量的定义位置(用{}声明示例变量或者用@property属性声明实例变量) 1.用{}声明示例变量: 此方法生命的实例变量,编译器在编译时,会自动计算其偏移量(表示该变量距离存放对象的内存区域的 ...
- 编写高质量JavaScript代码的68个有效方法
简介: <Effective JavaScript:编写高质量JavaScript代码的68个有效方法>共分为7章,分别涵盖JavaScript的不同主题.第1章主要讲述最基本的主题,如版 ...
- Effective Python之编写高质量Python代码的59个有效方法
这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...
- 编写高质量JS代码的68个有效方法(八)
[20141227]编写高质量JS代码的68个有效方法(八) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(七)
[20141220]编写高质量JS代码的68个有效方法(七) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(六)
[20141213]编写高质量JS代码的68个有效方法(六) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(四)
[20141129]编写高质量JS代码的68个有效方法(四) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(三)
[20141030]编写高质量JS代码的68个有效方法(三) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(二)
[20141011]编写高质量JS代码的68个有效方法(二) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
随机推荐
- 关于mysql严格模式的开启、关闭
由于项目中对一些默认值设置问题,以及种种原因,mysql数据库需要使用非严格模式开发(mysql最近的版本默认是开启严格模式的). linux下mysql服务下操作步骤是: 1.进入mysql服务 ...
- C#扩充类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- github从上传代码到发布静态网站
1.上传代码 第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令 git init 第二步:将项目的所有文件添加到仓库中 git add . 如果想添加某个特定的文件,只需把.换成特定 ...
- Linked List - leetcode
138. Copy List with Random Pointer //不从head走 前面加一个dummy node 从dummy走先连head 只需记录当前节点 //这样就不需要考虑是先new ...
- php 常量定义
php常量定义及取值 常量在定义时赋值: 不能变 :不能销毁: 具有超全局作用于:常量只能储存标量数据(字符 整型 浮点 ): <?php define("hello", ...
- 关于高性能javascript 笔记
最近买了本新书,准备自己吃 狗粮的同时也吃点精神食粮.笔记总结,从现在开始,看我啥时候能看完这本酥,就酱紫, begin:
- CentOS7 安装 OpenSSL 1.0.1m 和 OpenSSH 6.8p1
# 下载软件 wget http://zlib.net/zlib-1.2.8.tar.gz wget ftp://ftp.openssl.org/source/openssl-1.0.1m.tar.g ...
- DB2数据库实例创建与删除 学习笔记
以root身份执行 $DB2HOME/instance/db2idrop -f 实例名,注意一定要加-f,否则不会删除实例下面sqllib文件.如果不幸忘了,执行db2icrt,会报sqllib文件存 ...
- 从后台调用前台js
引用: using System.Web.UI; ScriptManager.RegisterClientScriptBlock(this, GetType(), "Js", &q ...
- [Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
一.录制脚本: 1.启动jmeter 2.添加线程组 3.添加http代理 4.配置代理 a.jmeter侧(注意:lest plan content这里需要选择目标控制器,本文即测试计划中需要选择的 ...