@

对象常量

不久前,Objective-C 只有 NSString 常量。但随着 Apple 的 LLVM 4.0 编译器的发布,让我们欣喜的是 NSNumber,NSArray 和 NSDictionary 常量被添加了。

  • @"":返回一个由引号内 Unicode 内容初始化的 NSString 对象。
  • @42,@3.14,@YES,@'Z':返回一个由相关类构造初始化的 NSNumber 对象,比如 @42 → [NSNumber numberWithInteger:42],或者 @YES → [NSNumber numberWithBool:YES]。支持使用后缀进一步指定类型,如 @42U → [NSNumber numberWithUnsignedInt:42U]。
  • @[]:返回一个由冒号分隔的对象列表作为内容的 NSArray 对象。比如,@[@"A", @NO, @2.718] → [NSArray arrayWithObjects:@"A", @NO, @2.718, nil] (注意在数组常量中结束标记 nil 是不需要的)。
  • @{}:返回一个由特定键-值对初始化作为内容的 NSDictionary 对象,格式: @{@"someKey" : @"theValue"}。
  • @():动态评估封装的表达,并返回基于其值的合适的对象常量(比如,const char* 返回 NSString,int 返回 NSNumber,等等。)。这也是使用数字常量和枚举值的指定方式。