一开始接触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"]
---------------------
以下是苹果官方文档给出的,@算子 这个特性的软硬件环境要求
|
Xcode 4.4 (LLVM Compiler 4.0) |
All releases |
All iOS releases |
|
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 |
|
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 |