Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法
2015-09-13 22:01
351 查看
Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法
从xcode4.4开始,LLVM4.0编译器为Objective-C添加一些新的特性。创建数组NSArray,字典NSDictionary, 数值对象NSNumber时,可以像NSString的初始化一样简单方便。妈妈再也不担心程序写得手发酸了。A. NSArray
首先是非常常用的NSArray,NSMutableArray。NSArray是一个初始化后就固定的静态数组。如果想对数组的元素进行插入,删除,更新等操作,就得使用Objective-C 的动态数组NSMutableArray。
在LLVM4.0之前,NSArray的初始化方法如下。注: 以下的方法在LLVM4.0之后也可以继续使用。
1.NSArray的初始化赋值
//LLVM4.0之前
NSArray *oldOne = [NSArray arrayWithObjects:@"1st", @"2nd", @"3th", nil];
//在LLVM4.0之后
NSArray *newOne =@[@"1st", @"2nd", @"3th”];
2.获取NSArray的某个值
//LLVM4.0之前
NSString *s = [oldOne objectAtIndex:1];
//在LLVM4.0之后
NSString *s = newOne[1];
3. NSMutableArray 更新/替换某个元素
//LLVM4.0之前
[mutable replaceObjectAtIndex:1 withObject:@"disposed"]; //更新某个元素
在编写一些常用算法时,下面的特性导致编写起来有一点麻烦。
/*想更新NSMutableArray的某个元素?请先初始化这个元素*/
NSMutableArray *oldMutable = [[NSMutableArray alloc] init]];
/*必须如下给每个元素赋一个初值,否则exception会发生
for (int h = 0; h < 5; h++) {
[oldMutable addObject:@"1"];
}
@try{
[mutable replaceObjectAtIndex:1 withObject:@"disposed"];
}
@catch(NSException *exception){
NSLog(@“%@“, [exception description]);
}
//LLVM4.0之后
NSMutableArray *newMutable = [NSMutableArray alloc] init];
newMutable[2] = @"myObject";
关于NSDictionary和NSNumber的变化如下, 就不细说啦。
B. NSDictionary
1.NSDictionary的初始化赋值
一般性的写法:
dict = [NSDictionary dictionaryWithObjects:@[o1, o2, o3]
forKeys:@[k1, k2, k3]];
LLVM4.0之前后:
dict = @{ k1 : o1, k2 : o2, k3 : o3 };
如:dict = @{ @"a" : @100, @"b": @200, @"c" :@300 };
2.获取NSDictionary中某个键对应的值
NSNumber *num = dict[@"b"];
C. NSNumber
1. 一般性的写法:
NSNumber *number;
number = [NSNumber numberWithChar:'X'];
number = [NSNumber numberWithInt:12345];
number = [NSNumber numberWithUnsignedLong:12345ul];
number = [NSNumber numberWithLongLong:12345ll];
number = [NSNumber numberWithFloat:123.45f];
number = [NSNumber numberWithDouble:123.45];
number = [NSNumber numberWithBool:YES];
2. LLVM4.0之前后:
NSNumber *number;
number = @'X';
number = @12345;
number = @12345ul;
number = @12345ll;
number = @123.45f;
number = @123.45;
number = @YES;
相关文章推荐
- Microsoft Visual Studio International Pack 1.0 SR1--关于汉字转拼音
- 2015亚洲区域赛长春赛区网络预选赛
- hdu 5446 Unknown Treasure(lucas+中国剩余定理)
- 只要肯用脑子,就不是简单的重复(拥抱重复,发现规律,发现价值,一万小时的基础)
- 面向对象设计原则
- JS BOM(浏览器对象)
- unpipc.h下载和编译
- iOS之OC随笔-Model数据类型
- iOS软件开发 获取相册图片或照相
- 数据结构学习2--线性表的设计与实现(二)
- UNIX 高手的 10 个习惯 http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html
- RadialGradient环形渲染
- 虚数的图解
- 重拾java系列一java基础(3)
- Python进阶06 循环对象
- 每天一个linux命令(4):mkdir命令 http://www.cnblogs.com/younes/archive/2009/11/20/1607174.html
- Linux ELF File
- Unity Web Player修改加载页面的LOGO
- JavaScript设计模式——单体模式
- hdu 5444 Elven Postman(二叉树)