objective-c从什么时候开始支持 @算子进行初始化 (可以称作 文本表示法)
2015-03-17 16:23
369 查看
一开始接触ios开发,就记得@""这种string变量的写法
NSString *str = @"Im a String";
这种写法叫做object literal,可以翻译为 文本表示法,使用 @算子
配合一些特定格式,进行对象初始化
---------------------
从xcode4.4开始,苹果开始支持NSNumber NSDictionary NSArray使用 @算子 进行初始化。
使用@算子,编译器会自动检查后面赋值所对应的类型,@(2.2f)等同[NSNumber numberWithFloat:2.2f];
另外,一对括号()可以省略,简写为 @2
在c语言中有一种情况,'a'是一个字母ascii的字符,它有一个对应的数值97,可以用来进行数值运算
在oc中同样, @'a' 等同 [NSNumber
numberWithInt:97];
//等同[NSArray arrayWithObjects:@1, @2];
@[]的中括号里包括的,就是要add到数组中的对象
*dic = @{@"key1":@2, @"key2":@3}
; //@"key1":@2是一个key:value键值对
@{}中包含的就是key:value键值对,多个键值对以逗号,分开。
注意,使用@算子生成的数组、字典都是不可变的。
NSArray *arr = @[@1,@2] ,对应取@2,就是 arr[1],等同于[]
NSDictionary *dic = @{@"key":@(2)}
,对应取数据就是 dic[@"key"]
---------------------
以下是苹果官方文档给出的,@算子 这个特性的软硬件环境要求
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, NSDictionaryand NSArrayliterals | Xcode 4.4 (LLVM Compiler 4.0) | All releases | All iOS releases |
@YESand @NOliterals | 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 |
NSDictionaryand NSArraysubscripting | 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 |
相关文章推荐
- (修改版本)一个JavaScript Function Outliner插件 支持内嵌javascript,且可以对javascript进行压缩
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- 非“自动实现的属性”也可以用“对象初始值设定项”进行初始化
- C99标准支持结构体按成员名称进行指定初始化。
- 使用truelicense进行Java程序license控制 经过扩张可以验证license 开始结束日期,验证绑定给定mac地址
- 使用传统算法进行表达式求值(数字支持科学表示法,操作符支持加减乘除乘方, 支持括号, 不支持函数)
- 在ActionBar显示ShareActionProvider分享文本,点击可以打开进行分享(19)
- 可以按列进行块选择的文本文件编辑器很多
- C++中的初始化列表中可以对那些变量或对象进行初始化
- graphana从2.5开始也可以支持ES了
- objective-C不支持16进制的颜色表示,需要转换成rgb表示法(笔记)
- objective-C不支持16进制的颜色表示,需要转换成rgb表示法
- iOS:XCode 4.2开始Objective-C支持ARC
- 什么时候声明数组可不用初始化便可以使用
- 异或加密法 在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。 解密的方法就是再执行一次同样的操作。
- 支持全客户端模式-dotNetFlexGrid v1.1稳定版本发布(可以快速的进行单据类开发哦)
- iOS:XCode 4.2开始Objective-C支持ARC
- hibernate对jpa的支持,自己实现AnnotationSessionFactoryBean,可以对jpa标签进行识别
- 编程中经常发现使用未初始化变量,编译器原来可以处理进行默认初始化
- 深入理解java虚拟机(三)(一个类加载器只初始化一次类对象,不同类加载器可以对同一类对象进行初始化)