当使用Objective-C的时候,你总会遇到Foundation 框架中的一些类,这些类包含NSString,NSNumber,NSArray和NSDictionary,这些数据结构都是自解释的。
     Objective-C以简明具体的语法而著名,自从oc1.0有一个简单的方式定义一个NSString变量,我们能够这样声明一个字符串变量
NSString *someString=@“Hello Lves";
     没有这样的语法之前,我们创建一个字符串变量须要先alloc然后init。Literal(简明)语法已经在oc2.0之后扩展到了NSNumber,NSArray和NSDictionary.使用简明语法能够降低代码量和更加easy阅读。
Literal Number
     NSNumber变量能够封装一些基本类型变量,像:int,float,bool等,在未使用literal之前,或许你会这样定义
NSNumber *someNumber=[NSNumber numberWithInt:1];
     整数1被放进NSNumber中,当然有比这更好的方法,实例:
 NSNumber *intNumber=@1;
NSNumber *floatNumber=@2.5;
NSNumber *doubleNumber=@3.14159;
NSNumber *boolNumber=@YES;
NSNumber *charNumber=@'a';

简明语法也能够这样表述:

    int x=5;
float y=6.32f;
NSNumber *expressionNumber=@(x*y);
像上边那样定义而不是採用之前的语法因此使用简明语法定义NSNumber变量是十分实用的。

Literal Arrays
     数组是常常使用的类型,在2.0之前我们能够这样定义一个数组:
NSArray *animals=[NSArray arrayWithObjects:@“cat”,@“dog”,nil];

然而使用Literal语法之后,你仅仅须要这样做:

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

对于数组还不止这些,平时操作数组获得一个指定下标下的内容我们能够使用objectAtIndex方法:

NSString *dog=[animals objectAtIndex:1];

使用letaral,你能够这样做:

 NSString *dog=animals[1];


使用简明语法的时候有一点须要注意:假设数组中有一个对象是空,它会报异常,由于literal语法实在栈上动态的创建和加入对象的,你得到的异常例如以下:

以下看以下一个样例:
    id obj1=@"wildcat";
id obj2=@"Lves Li";
id obj3=@"lele"; NSArray *arrayA=[NSArray arrayWithObjects:obj1,obj2,obj3, nil];
NSArray *arrayB=@[obj1,obj2,obj3];
假如obj2=nil;此时使用简明语法定义的数组arrayB就会报异常,而arrayA不会,可是arrayA中仅仅有一个变量obj1。由于arrayWithObjects: 方法直到遇到nil就不加入变量了而不会报异常。
这点不同说明了使用literal更加的安全。抛出异常使应用崩溃比创建一个包括比期望变量少的数组要好,报出异常意味着我们能够更easy发现问题进而解决。


Literal Dictionary

未完待续:转载请注明原文转自:http://blog.csdn.net/wildcatlele












Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  3. 《MFC游戏开发》笔记三 游戏贴图与透明特效的实现

    本系列文章由七十一雾央编写,转载请注明出处. 313239 作者:七十一雾央 新浪微博:http://weibo.com/1689160943/profile?rightmod=1&wvr=5 ...

  4. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  5. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  6. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  7. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  8. 响应式编程笔记三:一个简单的HTTP服务器

    # 响应式编程笔记三:一个简单的HTTP服务器 本文我们将继续前面的学习,但将更多的注意力放在用例和编写实际能用的代码上面,而非基本的APIs学习. 我们会看到Reactive是一个有用的抽象 - 对 ...

  9. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

随机推荐

  1. Eclipse用法和技巧七:自动生成get和set方法2

    上一篇文章中我们介绍了自动批量生成get和set函数的方法.这个方法一般在声明完类的数据域之后使用,比较方便快捷.这里再补充几个自动生成get和set函数的方法. 步骤一:在声明的数据域中按Ctrl+ ...

  2. CSDN高校俱乐部2013年秋季北京地区第一站“编程语言的应用及其发展”—北京联合大学

    2013年12月11日晚17:00.CSDN高校俱乐2013年秋季北京地区第一站“编程语言的应用及其发展”在北京联合大学进行. 首先,CSDN总部人员介绍CSDN俱乐部的改版以及线上编程挑战赛.CSD ...

  3. 看到关于socket非阻塞模式设置方式记录一下。

    关于socket的阻塞与非阻塞模式以及它们之间的优缺点,这已经没什么可言的:我打个很简单的比方,如果你调用socket send函数时: 如果是阻塞模式下: send先比较待发送数据的长度len和套接 ...

  4. JS - 鼠标经过边框旋转

    *右侧为鼠标经过时效果. 下载地址:http://www.lanrentuku.com/js/tupian-1200.html

  5. TControl.GetDeviceContext会给图形控件建立新的坐标原点和建立新的剪裁区域

    这是取得DC句柄的其中一种方法(会重定义原点和建立新的剪裁区): function TControl.GetDeviceContext(var WindowHandle: HWnd): HDC; be ...

  6. 算法设计与分析——多边形游戏(DP)

    1.问题描述:   给定N个顶点的多边形,每个顶点标有一个整数,每条边上标有+(加)或是×(乘)号,并且N条边按照顺时针依次编号为1~N.下图给出了一个N=4个顶点的多边形. 游戏规则 :(1) 首先 ...

  7. perl .*?和.*

    redis01:/root# cat x2.pl my $str="212121a19823a456123"; if ($str =~/.*a(.*)23/){print &quo ...

  8. MP3文件的结构与编程

    有一个朋友喜欢听MP3,为了获取MP3,写了一个程序,专门从一家音乐网站上搜索下载mp3,一下子下载了有上千首.这时朋友又犯愁了,这些MP3的歌曲名字都是使用1,2,3,4,..等数字命名,挑选起来十 ...

  9. 与众不同 windows phone (9) - Push Notification(推送通知)之概述, 推送 Toast 通知

    原文:与众不同 windows phone (9) - Push Notification(推送通知)之概述, 推送 Toast 通知 [索引页][源码下载] 与众不同 windows phone ( ...

  10. 无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin

    VMware安装unbuntu 12.04 LTS时,当你使用VMware的Easy Mode安装时,提示须要安装VMware Tools,屏幕会出现下方的文字: installed unbuntu ...