关闭

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

标签: Objective-c
249人阅读 评论(0) 收藏 举报
分类:
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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41929次
    • 积分:941
    • 等级:
    • 排名:千里之外
    • 原创:54篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3条
    文章分类