Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法
Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法
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;
Xcode4.4(LLVM4.0编译器)中NSArray, NSDictionary, NSNumber优化写法的更多相关文章
- Objective-C中关于NSArray, NSDictionary, NSNumber等写法的进化
从xcode4.4开始,LLVM4.0编译器为Objective-C添加一些新的特性.创建数组NSArray,哈希表NSDictionary, 数值对象NSNumber时,可以像NSString的初始 ...
- express 3.0.x 中默认不支持layout.ejs的解决方法
1.第一种方法用include 用<% include 模板名(可不加.ejs) %>的写法,具体如下 <% include header %> //套用布局拆成两部分 hea ...
- 在MFC中使用GDI+的一般方法,以VC6.0编译器为例
1.载解压GDI+开发包: 2.正确设置include & lib 目录: 设置如下:VC6.0编译器菜单Tools->Options->Directories中添加inlude ...
- oc/object-c/ios哪种遍历NSArray/NSDictionary方式快?测试报告
做app的时候,总免不了要多次遍历数组或者字典.究竟哪种遍历方式比较快呢?我做了如下测试:首先定义测试用宏: ? 1 2 3 4 5 6 7 8 9 #define MULogTimeinterval ...
- OC学习篇之---Foundation框架中的NSDictionary类以及NSMutableDictionary类
今天来看一下Foundation框架中的NSDictionary类,NSMutableDictionary类,这个和Java中的Map类很想,OC中叫字典,Java中叫Map,还有字典是无序的,这个和 ...
- PL/0编译器实践---后记
花了几天时间,把清华版的<编译原理>一书中的PL/0编译器实践了一遍.颇有收获,记录如下: 理解代码的技巧,如何理解一份代码,比如这个程序,其逻辑相对于一般程序就比较复杂了,如何翻译,虚拟 ...
- [转]一些NSArray,NSDictionary,NSSet相关的算法知识
iOS编程当中的几个集合类:NSArray,NSDictionary,NSSet以及对应的Mutable版本,应该所有人都用过.只是简单使用的话,相信没人会用错,但要做到高效(时间复杂度)精确(业务准 ...
- PL/0编译器(java version)–Praser.java
1: package compiler; 2: 3: import java.io.IOException; 4: import java.util.BitSet; 5: 6: /** 7: ...
- Read and Write NSArray, NSDictionary and NSSet to a File
查询地址:http://iosdevelopertips.com/data-file-management/read-and-write-nsarray-nsdictionary-and-nsset- ...
随机推荐
- ES5 object方法整理
Object.getPrototypeOf(object):调用对象父类原型上的方法; function Person(){ this.method1 = function(){alert(1)} } ...
- vim的日常使用
Esc 退出编辑模式,输入一下命令 :wq保存后退出 :wq!强制保存后退出 :w保存但不退出 :w!若文件为只读,强制保存 :q不保存退出 :q!不保存强制退出 :e!将文档还原到最原始状态
- CSS3,transform3D立体可拖拽正方体实现原理
---恢复内容开始--- 今天咱们来说一下,CSS中的3D效果 .如果你把transform真的掌握的和纯熟的话,就可以直接通过CSS做出很多很炫酷的效果,甚至.轮播图和选项卡都可以通过CSS来做,咱 ...
- Codeforces Round #416 (Div. 2) A+B
A. Vladik and Courtesy 2 seconds 256 megabytes At regular competition Vladik and Valera won a and ...
- 第三次Scrum
1.小组成员 周 斌舒 溢许嘉荣唐 浩黄欣欣廖帅元刘洋江薛思汝 2.小组第三次冲刺完成情况 github仓库小组的第三次任务是完成体系结构环境图和系统原型图.在体系结构设计中,分为上级系统----把目 ...
- iptables 安全
注解:来自某位大神的详解,做个笔记. iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包 ...
- 并发包同步工具CyclicBarrier
/** * * @描述: 同步工具 * 表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指点地点集合碰合 . * @作者: Wnj . * @创建时间: 2017年5月16日 . * @版本: ...
- Linux 虚拟机虚拟网卡问题导致无法连接问题
问题描述 当 Linux 虚拟机启动时,通过串口输出或者启动日志, 观察到虚拟网卡启动或者初始化故障, 导致虚拟机无法连接. 问题分析 常见的超时报错范例如下: CentOS 复制 Bringing ...
- Connection Manager ->> Multiple Flat File Connection & Multiple File Connection
遍历一个文件夹下的所有文件的方法有两钟:1)使用Multiple Flat File Connection,把所有我们要的文件用"|"作为连接符拼凑出一条connection st ...
- Studying TCP's Congestion Window using NS
Studying TCP's Congestion Window using NS How to obtain TCP's CWND value The most important value th ...