• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

EffectiveObjective-C2.0笔记三(LiteralSyntax简写语法)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
     当使用Objective-C的时候,你总会遇到Foundation 框架中的一些类,这些类包括NSString,NSNumber,NSArray和NSDictionary,这些数据结构都是自解释的。
     Objective-C以简明详细的语法而著名,自从oc1.0有一个简单的方式定义一个NSString变量,我们可以这样声明一个字符串变量
NSString *someString=@“Hello Lves";
     没有这种语法之前,我们创建一个字符串变量需要先alloc然后init。Literal(简明)语法已经在oc2.0之后扩展到了NSNumber,NSArray和NSDictionary.使用简明语法可以减少代码量和更加容易阅读。
Literal Number
     NSNumber变量可以封装一些基本类型变量,像:int,float,bool等,在未使用literal之前,也许你会这样定义
NSNumber *someNumber=[NSNumber numberWithInt:1];
     整数1被放进NSNumber中,当然有比这更好的方法,实例:
 NSNumber *intNumber=@1;
    NSNumber *[email protected];
    NSNumber *[email protected];
    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语法之后,你只需要这样做:

对于数组还不止这些,平时操作数组获得一个指定下标下的内容我们可以使用objectAtIndex方法:
NSString *dog=[animals objectAtIndex:1];

使用letaral,你可以这样做:
 NSString *dog=animals[1];

使用简明语法的时候有一点需要注意:如果数组中有一个对象是空,它会报异常,因为literal语法实在栈上动态的创建和添加对象的,你得到的异常如下:

下面看下面一个例子:

假如obj2=nil;此时使用简明语法定义的数组arrayB就会报异常,而arrayA不会,但是arrayA中只有一个变量obj1。因为arrayWithObjects: 方法直到遇到nil就不添加变量了而不会报异常。
这点不同说明了使用literal更加的安全。抛出异常使应用崩溃比创建一个包含比期望变量少的数组要好,报出异常意味着我们可以更容易发现问题进而解决。


Literal Dictionary

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












鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Objective-C/C++混编编译器设置发布时间:2022-07-12
下一篇:
Swift与Objective-c 混编CocoaPods 引入第三方库遇到的问题 (一)发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap