布莱恩F爱
向一位来自Portlandyobet英雄联盟的谷歌开发专家学习Angular、Web技术和Node.js。
广告 ·ultimatecourses.com
用终极课程学习Angular的正确方法

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

布莱恩F爱

嗨,我是布莱恩。我对TypeScript, Angular和Node.js感兴趣。我和我最好的朋友邦妮结婚了,我住在波特兰,我经常滑雪。