Literals(字面语法)
字面语法是的编译器指令,它提供简化符号来创建对象。
- 1
NSString *greeting = @"Hello World";它的语法很简单,上面的代码就是通过在C字符串的前面加上@符号创建了一个NSString对象greeting,整段代码看起来简洁易懂,如果没有直接量语法,那么创建这个greeting可能就要使用下面的方法了:
1NSString *greeting = [NSString stringWithUTF8String:"Hello World"];在Xcode4.4和LLVM4.0之后,一些新特性被提出来,其中一个就是对NSNumber、NSArray和NSDictionary使用字面量语法。
NSNumber:
在新特性提出来之前,我们要创建的一个NSNumber对象可能是这样的:
1NSNumber *aNumber = [NSNumber numberWithInt:22];那么现在就可以这样写:
1NSNumber *aNumber = @22;当然这里不仅对于 -numberWithInt:适用,对于其他的也同样适用:
除此之外,你还可以用表达式:123456789101112131415//不用字面量的方式:NSNumber *aBool = [NSNumber numberWithBool:YES];NSNumber *aChar = [NSNumber numberWithChar:'a'];NSNumber *aUnsigned = [NSNumber numberWithUnsignedInt:22U];NSNumber *aLong = [NSNumber numberWithLong:27L];NSNumber *aFloat = [NSNumber numberWithFloat:3.14F];NSNumber *aDouble = [NSNumber numberWithDouble:3.14];//字面量的写法NSNumber *aBool = @YES;NSNumber *aChar = @'a';NSNumber *aUnsigned = @22U;NSNumber *aLong = @27LNSNumber *aFloat = @3.14F;NSNumber *aDouble = @3.14;1NSNumber *result = @(2+3*4);NSArray
不使用字面量语法的时候,创建一个数组通常是这样的:
1NSArray *aArray = [NSArray arrayWithObjects: [NSNumber numberWithInt:22], @"kuntzuo", @"hello", nil];而有了字面量语法之后,就可以这样写:
1NSArray *aArray = @[@22, @"kuntzuo", @"hello"];创建数组的字面量的方式变得更加简洁了,在方括号前面加上字面量@符号 ,里面写上内容,而且不再需要nil作为结束标志了,如果没有去掉nil会得一个警告,运行时会报错。
NSDictionary
创建一个NSDictionary的传统方式是这样:
1234567891011121314151617NSArray *keys = [NSArray arrayWithObjects:@"Name", @"Sex", @"Age", nil];NSArray *objects = [NSArray arrayWithObjects:@"kuntzuo", @"男", [NSNumber numberWithInt:22], nil];NSDictionary *myProfile = [NSDictionary dictionaryWithObjects:objects forKeys:keys];//或者是NSDictionary *myProfile = [NSDictionary dictionaryWithObjectsAndKeys:@"kuntzuo ", @"Name",@"男 ", @"Sex",[NSNumber numberWithInt:22], @"Age",nil];以上两种方法看起来都不简单,而且容易混乱。字面量语法给我们更好的可选项,看看下面写法:
1NSDictionary *myProfile = @{"Name":"kuntzuo","Sex":"男","Age":@22};写起来方便看起来爽有木有,这样的形式看起来是不是很熟悉呢?像JavaScript的对象?像JSON?反正我觉得方便很多啦。
除了用字面量来创建NSArray、NSNumber、NSDictionary之外。如果集合是可变类型如
NSMutableArray、NSMutableDictionary,新特性还允许你用下标的方式来访问和修改集合中的值。下面的代码简单演示了这一特性。
123456789101112131415161718192021//对于上面的NSArray *aArrayNSArray *aArray = @[@22, @"kuntzuo", @"hello"];NSMutableArray *mutableArray = [@[@22, @"kuntzuo", @"hello"] mutableCopy];//传统访问方式NSString *greeting = [mutableArray objectAtIndex:2];//"hello"//新方法访问NSString *greeting = mutableArray[2];// "hello"//新方法修改mutableArray[2] = @"hello world";//对于上面的NSDictionaryNSDictionary *myProfile = @{"Name":"kuntzuo","Sex":"男","Age":@22}NSMutableDictionary *mutableDic = [myProfile mutableCopy];//传统访问方式NSString *name = [mutableDic objectForKey:@"Name"];// "kuntzuo"//新方法访问NSString *myName = mutableDic[@"Name"];//"kuntzuo"//新方法修改mutableDic[@"Name"] = @"kuntian zuo";
本文介绍了Objective-C中引入的字面量语法,包括NSString、NSNumber、NSArray和NSDictionary的简化创建方式,以及如何使用字面量语法更简洁地操作可变集合。
1万+

被折叠的 条评论
为什么被折叠?



