Objective-C 基础之强大的字面量

原创 2015年11月18日 11:29:41
Objective-C 基础之强大的字面量
Objective-C对字面量的支持其实是很到位的。看到C#的字典可以用[]来取值就觉得很爽,现在发现Objective-C也非常的不错,接下来说一说Objective-C的字面量。

1、用字面量初始化字符串(NSString)
一般我们初始化字符串都是这样写
NSString* str = [NSString stringWithString:@"123"];
但是我们可以通过字面量来赋值,上述代码等同于下面
NSString* str = @"123";

2、用字面量初始化NSNumber
NSNumber* number = [NSNumber numberWithInt:3];
我不得不说这种写法很麻烦,而且当我想通过BOOL来建立就需要
NSNumber* number = [NSNumber numberWithBOOL:YES];
在OC中,它提供了非常简单的初始化方法,就是在常量前面加@符合,可以使编译通过
NSNumber* number_I = @3;  //整形
NSNumber* number_B = @YES; //布尔
NSNumber* number_F = @2.5F; //float
NSNumber* number_D = @2.5; //double
NSNumber* number_UI = @4U; //unsigned int
NSNumber* number_L = @5L;  //long

还有long long 等等都可以直接初始化,很方便用。
注意:如果是Objective-C++,我们还可以使用@true和@false来初始化bool类型。

3、用字面量初始化数组NSArray,以及通过下标访问
NSString* str1= @"xixi";
NSString* str2= @"hehe";
NSString* str3= @"haha";

通常我们建立一个数组需要
NSArray* array = [NSArray arrayWithObjects:str1,str2,str3,nil];
而我们可以直接通过字面量建立,方法如下
NSArray* array = @[str1,str2,str3]; 
 
但是注意 新的写法不允许对象时nil
我们还可以 NSArray* array1 = @[@1,@2,@3,@4,@5];

我们还可以方便的通过下标来访问对象
比如 int a = [array1[2] integerValue];
这时候 a就等于3,方便很多。

注意:NSMutableArray不允许这样初始化,如果我们需要必须使用mutableCopy或者相关的初始化方法。

 4
、用字面量初始化数组NSDictionary,以及通过关键字访问
 我们可以通过以下方法初始化一个字典
 
NSDictionary* dict = @{@"key1":@"value1",@"key2":@"value2",@"key3":@"value3"};
上面的写法很像json数据。
注意:这里的任何元素都不允许是nil 。
 
我们还可以通过关键字直接去对象,例如:
NSString * str = dict[@"key1"];
str此时的内容就是@"value1" 

 注意以上的语法仅仅支持LLVM4,如果我们需要同时支持LLVM4和非LLVM4,我们需要用到一个关键字__has_feature  

#if  
__has_feature(objc_array_literals)
//支持数组字面量特性的处理
#else
//不支持数组字面量特性的处理
#endif 



#if  __has_feature(objc_dictionary_literals)
//支持字典字面量特性的处理
#else
//不支持字典字面量特性的处理
#endif 

当然还有一些相关的其他关键字再此就不介绍了,感谢大家的收看。

Objective-C语法之字面量语法

今天来学习下Objective-C中的字面量语法,之前只是知道可以这样创建对象,并没有很清晰的一个总结,看过一本书之后觉得有必要摘出来,方便巩固自己的知识。 通常我们会用alloc和init方法来分...
  • tyuersunshine
  • tyuersunshine
  • 2016年05月29日 14:14
  • 1007

Objective-C 之 Literals(字面量)

转自出处 http://my.oschina.net/iamzkt/blog/127718
  • martin_liang
  • martin_liang
  • 2014年08月16日 08:43
  • 329

Objective-C字面量(Objective-C Literals)

原文地址:http://clang.llvm.org/docs/ObjectiveCLiterals.html 简介 clang同时推出了3个新的特性:数字字面量提供了从标量表达式创建NSNumber...
  • hark_2046
  • hark_2046
  • 2013年12月03日 13:10
  • 916

OC基础-零基础学习Objective-C:第一部分.类和对象

本人也是Objective-C的小白,以下只是记录我学习过程的历程,如有不对的地方或者疑问欢迎指正。 原发表在新浪微博上,现转移到这里 必备工具: 1.一本书,建议《Objective-C基础教程...
  • l522402543
  • l522402543
  • 2015年08月28日 21:45
  • 991

语法基础——Objective-C语法基础

iOS基础——Object-C基础 学习过Swift之后,好久没用已经生疏了,现在有项目来了,不得不停下手下的工作,开始学习OC (1)...
  • qq_30379689
  • qq_30379689
  • 2017年02月21日 19:37
  • 2895

Java各大基本类型包装类的字面量揭秘

Java各大基本类型包装类的字面量揭秘,看源码清晰明了
  • caimengyuan
  • caimengyuan
  • 2017年03月10日 19:58
  • 571

Objective-C代码块Block详解

block代码块是OC的一个特性,除了可执行的代码外,还可能包含变量的自动绑定(栈),或内存托管(堆)。所以一个block维护一个状态集(数据),可以在任何时候执行。block用来作为回调特别有用。 ...
  • CHENYUFENG1991
  • CHENYUFENG1991
  • 2015年10月25日 19:41
  • 2447

轻松拿下JavaScript(四)——对象字面量,this,call()和apply()方法,JS的异常处理

我们今天这讲主要讲解JavaScript的面向对象的几个内容:对象字面量,this,this,call()和apply()方法,Js的异常处理。 对象字面量: 1、我们之前看到的例子都是使...
  • yi_zz
  • yi_zz
  • 2012年11月25日 12:19
  • 8889

Objective-C 2.0 基础要点归纳

本文的阅读基本条件: 具备C/C++基础知识,了解面向对象特征 阅读过《Objective-C 2.0 程序设计(第二版)》、《Objective-C 程序设计 第6版》或相关基础OC书籍 知识要点...
  • gujinjin2008
  • gujinjin2008
  • 2015年07月18日 20:11
  • 1612

解释字面量、常量和变量之间的区别

转自:http://bbs.csdn.net/topics/380108521 C/C++ code ? 1 2 3 int a...
  • chelen_jak
  • chelen_jak
  • 2015年11月13日 10:39
  • 1716
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Objective-C 基础之强大的字面量
举报原因:
原因补充:

(最多只允许输入30个字)