NSArray NSDictionary和NSNumber字面量
随着苹果对LLVM编译器更新的发布,现在可以在Objective-C中使用对象文字表示法了。对于我们这些已经习惯了JavaScript和其他语言中经常使用的对象书写符号的人来说,这是一个巨大的进步。这到底是什么意思?这意味着您现在可以声明诸如之类的对象NSArray
,NSDictionary
,NSNumber
使用文字样式语法。
NSNumber
让我们从NSNumber
文字符号。就像NSString
符号,你现在可以声明NSNumber
使用前@
的象征。Objective-C编程人员非常熟悉声明NSString
使用类似:
NSString*你好=@“Hello, World”。;
在本例中,我们将创建an的一个新实例NSString
,而不需要分配和初始化对象,或不使用stringWithFormat:
或其他NSString
类方法。您还可以创建NSNumber
用同样的方法。
/ /原始numberWithInt:方法NSNumber*进行=(NSNumber numberWithInt:29];//新的文字语法NSNumber*进行=@29;
我们也可以创造其他的NSNumber
实例不仅仅是整数。我们可以创建无符号整数、长号、长号、浮点数和双精度数。
/ /原始语法NSNumber*进行=(NSNumber numberWithUnsignedInt:29 u];/ /文字语法NSNumber*进行=@29 u;
正如您所看到的,我们只是使用前面的@符号和后面的“U”类型后缀来声明无符号整数。这里是一个快速列表的后缀nsnumber:
U
=无符号整数l
=长噢
=龙龙F
=浮动
再举一个例子,让我们创建一个浮点数和一个双精度:
/ /原始语法NSNumber*piAsFloat=(NSNumber numberWithFloat:3.14159度];/ /文字语法NSNumber*piAsFloat=@3.14159度;/ /原始语法NSNumber*piAsDouble=(NSNumber numberWithDouble:3.14159];/ /文字语法NSNumber*piAsDouble=@3.14159;
注意,在上面的例子中,对于double,你不需要像你想象的那样使用“D”后缀。如果这样做,在尝试编译应用程序时将会出现错误。还可以使用对象文字语法从布尔值创建NSNumber。
/ /原始语法NSNumber*真正的=(NSNumber numberWithBool:是的];/ /文字语法NSNumber*真正的=@是的;
NSArray
虽然使用的对象文字NSNumber
是否方便,我真的很兴奋使用这个新功能NSArray
这被称为容器文字。让我们看看它的语法。
/ /原始语法NSArray*bandMembers=(NSArray arrayWithObjects:@“马克”,@“克里斯”,@“理查德”,@“Benj”,@“杰瑞”,零];/ /文字语法NSArray*bandMembers=@(@“马克”,@“克里斯”,@“理查德”,@“Benj”,@“杰瑞”];
请注意,在上面的示例中,您在前面加上了@符号,后面跟着左方括号。然后,包括将要添加到数组中的对象。还要注意没有零
在对象列表的末尾,因为这是不必要的。
NSDictionary
为NSDictionary类使用对象文字表示法的语法类似于用于数组的语法。这不会节省我们很多时间,但肯定更容易编写代码,并且明确了哪个值属于哪个键,特别是在用一行代码声明时。
/ /原始语法NSDictionary*bandMembers=(NSDictionary dictionaryWithObjectsAndKeys:@“主唱”,@“马克”,@“鼓手”,@“克里斯”,@“吉他”,@“理查德”,@“低音吉他”,@“Benj”,@“萨克斯”,@“杰瑞”,零];/ /文字语法NSDictionary*bandMembers=@{@“主唱”:@“马克”,@“鼓手”:@“克里斯”,@“吉他”:@“理查德”,@“低音吉他”:@“Benj”,@“萨克斯”:@“杰瑞”};
由于有了新的Clang编译器,这种新的对象文字语法应该唾手可得。您可以阅读完整的文件:http://clang.llvm.org/docs/ObjectiveCLiterals.html。