您的位置:首页 > 移动开发 > Objective-C

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

2015-03-17 16:23 369 查看
一开始接触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"]

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

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

NSNumber
,
NSDictionary
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐