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 中的字面量语法

前言:自己总结的一些关于OC中点面量语法的东东!有不对的地方希望大神们能指出来改正。点面量语法是自Objective-C 1.0推出的能够以很简单方式创建数据对象的语法。 例如:下面快速简便创建的NS...

【IOS沉思录】Objective-C中的糖衣语法(字面量)

糖衣语法的定义糖衣语法,又叫‘语法糖’、‘语法盐’等等,是由英国计算机科学家彼得·约翰·兰达(Peter J.Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响...
  • cordova
  • cordova
  • 2016年11月03日 15:36
  • 1161

说说 Objective-C 里的 @()字面量语法

http://www.cocoachina.com/ios/20141218/10688.html 在 Objective-C 中我们可以用 @"foo" 来创建一个 NSStrin...

Objective-c Literals语法(网上翻译为字面量,我称之为@语法 at符号语法)

Literals(字面语法) 字面语法是的编译器指令,它提供简化符号来创建对象。 NSString: ? 1 ...

Objective-C字面量语法总结

Objective-C枚举类型

Swift教程:Swift基础 数值型字面量

  • 2015年09月11日 16:11
  • 68.44MB
  • 下载

C和C++中字串符(String)和字符串字面量(String Literal)的区别

转自:http://www.360doc.com/content/12/0511/19/7775902_210379219.shtml C/C++中的对象指的是一块存储区。字符串字面量是不需要创建...

Java语言基础{Java_se(02)}-字面量和常量-变量的基本定义和使用-Java表达式-数据类型和分类-基本数据类型的转换-算数运算符-赋值运算符-比较运算符-三元运算符-逻辑运算符

Java语言基础{Java_se(02)}字面量和常量 常量:程序中固定不变化的值。 常量分类: 字面值常量: 比如:整数常量1,2,3,小数常量3.14,布尔常量false,true等. ...

Objective-C强大的类方法

在OC的类中,以+开头的方法全部都是类方法。什么意思呢?就是类方法只能由类对象进行调用,在类方法中同样可以调用其他类方法,甚至调用实例方法;而实例方法却不能调用类方法。我们通常看见的类方法都是创建一个...

Objective-C 基本类的Category (全而强大)

Categories是给你得不到源码的classes增加功能的一种方法。这个页面收集一些相关的Category,并且持续更新,你可以订阅关注。作者是Fille Åström,是@ IMGNRY的联...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Objective-C 基础之强大的字面量
举报原因:
原因补充:

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