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

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 

当然还有一些相关的其他关键字再此就不介绍了,感谢大家的收看。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值