【移动应用开发技术】怎么在Objective-C中使用语法糖_第1页
【移动应用开发技术】怎么在Objective-C中使用语法糖_第2页
【移动应用开发技术】怎么在Objective-C中使用语法糖_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】怎么在Objective-C中使用语法糖

今天就跟大家聊聊有关怎么在Objective-C中使用语法糖,可能很多人都不太了解,为了让大家更加了解,在下给大家总结了以下内容,希望大家根据这篇文章可以有所收获。语法糖语法糖(Syntacticsugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(PeterJ.Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。——维基百科需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换;而且可以提高开发编码的效率。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会,本文在简单的介绍OC语法糖的同时也会跟大家分享下我们使用过程中发现的'新'问题。下面话不多说了,来一起看看详细的介绍吧。语法糖的自白老班:为了传达教育局和学校的教育精神我来讲几句。老班:下面我要讲啦啊。老班:我要讲的是教育局和学校刚传达的规定。老班:最近校长发现迟到学生越来越多。老班:为了维护教学秩序,学校制定了新校规。老班:小明:说人话!老班:从明天起7点钟准时到校上课!老班巴拉巴拉讲了一堆,其实只是要表达*从明天起7点钟准时到校上课!*虽然最终能表达出效果,但是老班说的累小明们听着也烦。举这个例子可能比较极端,至少我没有遇到这么啰嗦的老师。但在编程语言中的确有不少让程序员感到罗嗦的语法,让人不能忍,这个时候语法糖就派上了用场。比如OC取数组元素:id

element

=

[array1

objectAtIndex:0];OC语法糖:你看,我是不是写起来很方便?id

element

=

array1[0];OC语法糖:往下看,我还能做更多呢。OC语法糖@[]和@{}NSArray一般数组的初始化和访问数组元素是这样的://

NSArray

alloc

初始化

NSArray

*array1

=

[[NSArray

alloc]

initWithObjects:@"a",

@"b",

@"c",

nil];

//

NSArray

的便捷构造

NSArray

*array2

=

[NSArray

arrayWithObjects:@"1",

@"2",

@"3",

nil];获取数组中的元素可以这样的://

获取相应索引的元素

id

element

=

[array1

objectAtIndex:0];

NSLog(@"array1_count

=

%d,

array[0]

=

%@",[array1

count],

element);如果使用语法糖,可以这样写://

NSArray的定义

NSArray

*array

=

@[@"lu",

@"da",

@"shi",

@YES,

@123];

int

count

=

(int)[array

count];

for

(int

i

=

0;

i

<

count;

i++)

{

NSLog(@"%@",

array[i]);

}NSDictionary字典的初始化一般是这样的:NSDictionary

*dictionay

=

[NSDictionary

dictionaryWithObjectsAndKeys:@"value1",

@"key1",

@"value2",

@"key2",

nil];

id

value

=

[dictionay

objectForKey:@"key1"];

NSLog(@"key1

=>

%@",

value);我们还可以这样简化:NSDictionary

*dictionary

=

@{

@"key0"

:

@"value0",

@"key1"

:

@"value1",

@"key2"

:

@"value2"

};

NSLog(@"key2

=>

%@",

dictionary[@"key2"]);事实上[]和{}在JSON数据格式中最常见了,[]一般封装一个数组,{}一般封装一个整体对象。NSNumber一般写法是这样的:NSNumber

*intNumber

=

[NSNumber

numberWithInt:123];

NSNumber

*floatNumber

=

[NSNumber

numberWithFloat:12.3];

NSNumber

*charNumber

=

[NSNumber

numberWithChar:@('a')];语法糖简化写法:NSNumber

*a

=

@123;

NSNumber

*b

=

@12.3;

NSNumber

*c

=

@('a');

NSLog(@"a

=

%@,

b

=

%@,

c

=

%@",

a,

b,

c);.点语法再用数组NSArray*array=@[@"lu",@"da",@"shi",@YES,@123];举例。想要获取数组中有多少个元素,我们平时都是怎么做的?[arraycount]还是array.count?老司机们思索片刻后说到:好像都用过,但是...我们知道在OC中[]和.分别代表调用方法和属性,看申明明明是属性呀,怎么可以用.方法?从OC2.0开始只要符合系统默认setter、getter书写格式的方法都可以使用.点语法,属性是一对getter、setter方法,点语法是属性的另一种调用格式,就是语法糖方法。这么做的目的只有一个,就是增加可读性、兼容常见用法减少代码报错!OC语法糖带来的'坑'一般我们认为语法糖带来了方便,特别是对于字典的初始化直接是key:value的赋值方式比dictionaryWithObjectsAndKeys这种反人类的方式友好的多。但真的没有其他什么问题吗?看下下面两个定义及运行结果:可见dictionaryWithObjectsAndKeys如果遇到value为nil的情况,后续key-value不会入库直接当做末尾nil结束初始化;而语法糖的方式就直接崩溃了,对崩溃了。所以使用语法糖还需要注意数据合法性问题,nil会造成意外的崩溃哦!基本原理语法糖就是语言中的一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论