第三条、多用字面量语法,少用与之等价的方法

首先,当我们创建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.

时间: 2024-09-18 09:13:00

第三条、多用字面量语法,少用与之等价的方法的相关文章

BLOCK/字面量(语法糖)OC——第六天

1.//block ,块语法,实质是匿名函数,是对C语言中函数的扩充,扩展:     //block  语法可以用来保存一段代码或者用来调用一段封装好的代码:     //block  语法由于是C语言实现的,所以执行效率特别高:     //block 语法由来,借鉴了函数指针的语法 //block 的数据类型     /* 2.     返回值类型(^)(参数类型1,参数类型2,....):      注意:1.如果要定义的block没有参数,()也不能省掉                 

JavaScript 对象字面量讲解_基础知识

在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外.以下也是JavaScript字面量的例子,如5.true.false和null,它们分别表示一个整数.两个布尔值和一个空对象. JavaScript还支持对象和数组字面量,允许使用一种简洁而可读的记法来创建数组和对象.考虑以下语句,其中创建了一个包含两个属性的对象(firstName和lastName): 还可

《Python参考手册(第4版•修订版)》——2.4 字符串字面量

2.4 字符串字面量 字符串字面量用于指定一个字符序列,其定义方法是把文本放入单引号(').双引号(")或三引号('''或""")中.这三种引号形式在语义上没有差别,但要求在字符串开始和结尾使用的引号类型必须相同.置于单引号和双引号中的字符串必须定义在一行上,而三引号的字符串可以分布在多行上,并且会将所有格式符号(即换行符.制表符.空格等)包含在内.像"hello" 'world'这样的相邻字符串(由空格.换行符或续行符隔开)将被连接起来,形成一

《Java 7程序设计入门经典》一2.3 字面量

2.3 字面量 在Java中,字面量(literal)指人类可以阅读的固定值的表示.例如,数100是字面量.字面量也常常称为常量(constant).大多数字面量及其用法非常直观,前面的示例程序中已经以各种形式使用过它们.现在正式地解释它们. Java的字面量可以是任意基本数据类型.每种字面量的表示取决于类型.如前所述,字符常量由单引号包括.例如,'a'和'%'都是字符常量. 整数字面量是没有小数部分的数.例如,10和-10是整数字面量.浮点字面量有小数点,小数点后是小数部分.例如,11.123

中国网站内容不可逾越的三条警戒线

在信息爆炸的年代里,做网站在内容方面仿佛已经不是困绕广大站长的问题了.于是COPY风行,采集疯狂,但是往往作为网站的具有生命力和核心价值的原创内容日益被洪水般的COPY内容所稀释消融. 作为一个缺乏创业资金.团队和行业资源的网站创业者,COPY不是他的错.世界都在COPY和采集而单纯地以一个小站长的精力和能力不COPY就意味者网站短顿,长时间地短顿的网站就要死去.因此,对站长来说采集无罪,COPY有择. 网站的内容来源不过原创和采集,但在采集过程中如果站友们想做的相对时间比较长久的话,有三条警戒

07年个人站长闯关,三条道路通罗马

站长 面对版权的压力.SP业务的萎缩和联盟广告的低迷,2007年个人网站还有没有出路?答案显然是肯定的.至少就目前而言,尚有三条比较好的出路供个人站长选择!个人站出路之一,建垂直行业网站    垂直行业网站是针对某一个行业兴建的,并对这一行业发生的资讯.交易等进行深度整合配置的网站.这类网站无需普通娱乐站那样的巨大流量,也可以实现教大的盈利.    鄙人最近对数十个比较熟悉的娱乐站和行业站进行了对比分析,结果发现在同等流量情况下,垂直行业网站的赢利能力是普通娱乐站的5到12倍.两者赢利能力的差异

C++的整型字面量和二进制数

整型字面量 可以用非常直接的方式表示整型字面量.下面是一些例子: –123 +123 123 22333 其中,前两个例子中的"+"和"–"号是前面提及的一元运算符.在第二个例子中,可以省略"+",因为这是默认的,但为了使该数值的含义更清晰,加上"+"也不会出问题.字面量+123与123是相同的.第4个例子在一般情况下写为22,333,但在整型字面量中不能使用逗号.如果使用了逗号,编译器就会把该数值当做用逗号分隔开的两个数值.

正则表达式字面量在ECMAScript5中的变化_正则表达式

在<JavaScript语言精粹>的第72页有这样一段: 用正则表达式字面量创建的RegExp对象来共享同一个单实例: 复制代码 代码如下: function make_a_matcher( ) { return /a/gi; } var x = make_a_matcher( ); var y = make_a_matcher( ); // 注意:x 和 y 是同一个对象! x.lastIndex = 10; document.writeln(y.lastIndex); // 10当你在浏览

JavaScript中字面量与函数的基本使用知识_基础知识

JavaScript 字面量 在编程语言中,一个字面量是一个常量,如 3.14. 数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e). 3.14 1001 123e5 字符串(String)字面量 可以使用单引号或双引号 be written with double or single quotes: "John Doe" 'John Doe' 表达式字面量 用于计算: 5 + 6 5 * 10 数组(Array)字面量 定义一个数组: [40, 100, 1, 5