objective-c从什么时候开始支持 @算子进行初始化 (可以称作 文本表示法)

一开始接触ios开发,就记得@""这种string变量的写法

NSString *str = @"Im a String";


这种写法叫做object literal,可以翻译为 文本表示法,使用 @算子 配合一些特定格式,进行对象初始化


---------------------


从xcode4.4开始,苹果开始支持NSNumber NSDictionary  NSArray使用 @算子 进行初始化。


先说NSNumber

NSNumber *num = @(2);  //这是一个常见写法,等同于 [NSNumber numberWithInt:2];

使用@算子,编译器会自动检查后面赋值所对应的类型,@(2.2f)等同[NSNumber numberWithFloat:2.2f];


另外,一对括号()可以省略,简写为 @2


在c语言中有一种情况,'a'是一个字母ascii的字符,它有一个对应的数值97,可以用来进行数值运算

在oc中同样, @'a' 等同 [NSNumber numberWithInt:97];


再说NSArray

NSArray *arr =  @[@1,@2]; //等同[NSArray arrayWithObjects:@1, @2];


@[]的中括号里包括的,就是要add到数组中的对象


三说NSDictionary


NSDictionary *dic = @{@"key1":@2, @"key2":@3} ; //@"key1":@2是一个key:value键值对

@{}中包含的就是key:value键值对,多个键值对以逗号,分开。


注意,使用@算子生成的数组、字典都是不可变的。


下角标访问法


除了初始化方法,苹果还提供了 用下角标进行数据访问 的方法,这跟在c里面的数组下角标很像。

NSArray *arr =  @[@1,@2] ,对应取@2,就是 arr[1],等同于[]

NSDictionary *dic = @{@"key":@(2)} ,对应取数据就是  dic[@"key"]


---------------------


以下是苹果官方文档给出的,@算子 这个特性的软硬件环境要求

NSNumberNSDictionary and NSArray literals

Xcode 4.4

(LLVM Compiler 4.0)

All releases

All iOS releases

@YES and @NO literals

Xcode 4.4 and OS X 10.8 or later SDK

Xcode 4.5 and iOS 6.0 or later SDK

(LLVM Compiler 4.0)

All releases

All iOS releases

NSDictionary and NSArray subscripting

Xcode 4.4 and OS X 10.8 or later SDK

Xcode 4.5 and iOS 6.0 or later SDK

(LLVM Compiler 4.0)

Requires modern runtime

Deploys back to OS X v10.6

Deploys back to iOS 5



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值