当使用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. PHP学习之-1.3 echo语句

    echo语句 echo语句是PHP输出语句,可以把字符串输出(字符串用双引号扩起来). 如下代码 <?php echo "Hello World!"; ?> 注意ech ...

  2. perl 改变对象属性

    [root@wx03 test]# cat Critter.pm package Critter; #unshift(@INC,"/root/test"); #use messag ...

  3. 性能测试之LoadRunner11 破解

    1. 下载破解文件lm70.dll和mlr5lprg.dll     lm70.dll文件,覆盖x:\Program Files\Mercury\LoadRunner\bin下文件即可.     ml ...

  4. Flex上传文件

    前几天写了一篇jsp页面利用ajaxFileUpload上传文件.如今把flex上传页面也分享出来: 前台页面 <?xml version="1.0" encoding=&q ...

  5. HBASE完全分布式模式的安装

    1集群环境下hadoop.1.1.2已经安装成功 2配置hosts,及环境变量 3编辑hbase-env.xml 4编辑hbase-site.xml 5编辑regionservers文件 6把Hbas ...

  6. cocos2d-x学习日志(10) --射击游戏(喵星战争)

    转载请标明:转载自[小枫栏目],博文链接:http://blog.csdn.net/rexuefengye/article/details/10553487 一.纵版射击游戏的特点 纵版射击游戏是一种 ...

  7. 利用iframe技巧获取訪问者qq

    今天工作时,有个暂时加的好友问我,怎么利用web页面获取訪问者的qq. 曾经没有接触过,感觉到非常好奇,可是工作中脑子非常亢奋,转的快,利用所学的知识迅速想到一条技巧,那就是假想用户在进入我们设定的页 ...

  8. Hibernate核心接口

    1.Configuration接口 Configuration负责管理Hibernate的配置信息. 2,SessionFactory接口 SessionFactory负责创建Session实例,能够 ...

  9. air ios 输入遮挡问题

    <!-- Adobe AIR Application Descriptor File Template. Specifies parameters for identifying, instal ...

  10. VK Cup 2012 Qualification Round 1---C. Cd and pwd commands

    Cd and pwd commands time limit per test 3 seconds memory limit per test 256 megabytes input standard ...