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 

当然还有一些相关的其他关键字再此就不介绍了,感谢大家的收看。
阅读更多
文章标签: Objective-c
个人分类: Objective-c
上一篇iOS-openGLES程序制作基本步骤以及某些API
下一篇Objective-C基础之常用简单设计模式
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭