OC[NSNumber][NSDictionary]语法简写
来源:互联网 发布:手机桌面图标软件 编辑:程序博客网 时间:2024/05/20 10:52
[NSNumber numberWith…:]
[NSNumber numberWithChar:‘X’] //简写为 @‘X’; [NSNumber numberWithInt:12345] //简写为 @12345 [NSNumber numberWithUnsignedLong:12345ul] //简写为 @12345ul [NSNumber numberWithLongLong:12345ll] //简写为 @12345ll [NSNumber numberWithFloat:123.45f] //简写为 @123.45f [NSNumber numberWithDouble:123.45] //简写为 @123.45 [NSNumber numberWithBool:YES] //简写为 @YES
[NSArray]
[NSArray array] //简写为 @[] [NSArray arrayWithObject:a] //简写为 @[ a ] [NSArray arrayWithObjects:a, b, c, nil] //简写为 @[ a, b, c ]
// compiler generates: 实际编译id objects[] = { a, b, c };NSUInteger count = sizeof(objects)/ sizeof(id);array = [NSArray arrayWithObjects:objects count:count];
需要特别注意,要是a,b,c中有nil的话,在生成NSArray时会抛出异常,而不是像[NSArray arrayWithObjects:a, b, c, nil]那样形成一个不完整的NSArray。其实这是很好的特性,避免了难以查找的bug的存在。
[NSDictionary ]
[NSDictionary dictionary] //简写为 @{} [NSDictionary dictionaryWithObject:o1 forKey:k1] //简写为 @{ k1 : o1 } [NSDictionary dictionaryWithObjectsAndKeys:o1, k1, o2, k2, o3, k3, nil] //简写为 @{ k1 : o1, k2 : o2, k3 : o3 }
// compiler generates:id objects[] = { o1, o2, o3 };3id keys[] = { k1, k2, k3 };4NSUInteger count = sizeof(objects) / sizeof(id);5dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys count:count];
Mutable版本和静态版本
NSMutableArray *mutablePlanets = [@[@"Mercury", @"Venus",@"Earth", @"Mars",@"Jupiter",@"Saturn",@"Uranus", @"Neptune" ]mutableCopy];
//对于标记为static的数组(没有static的字典,哈希和排序时在编译时完成的而且cocoa框架的key也不是常数),不能使用简写为其赋值(其实原来的传统写法也不行)。解决办法是在类方法+(void)initialize中对stayic进行赋值,比如:static NSArray *thePlanets;+ (void)initialize { if (self == [MyClass class]) { thePlanets = @[ @"Mercury", @"Venus", @"Earth", @"Mars", @"Jupiter", @"Saturn", @"Uranus", @"Neptune" ]; }}
下标
// 使用简写的一大目的是可以使用下标来访问元素[array objectAtIndex:idx] //简写为 array[idx]; [array replaceObjectAtIndex:idx withObject:newObj] //简写为 array[idx] = newObj [dic objectForKey:key] //简写为 dic[key] [dic setObject:object forKey:key] //简写为 dic[key] = newObject
//很方便,但是一定需要注意,对于字典用的也是方括号[],而不是想象中的花括号{}。估计是想避免和代码块的花括号发生冲突吧…简写的实际工作原理其实真的就只是简单的对应的方法的简写,没有什么惊喜。 但是还是有惊喜的..那就是使用类似的一套方法,可以做到对于我们自己的类,也可以使用下标来访问。而为了达到这样的目的,我们需要实现以下方法, 对于类似数组的结构:- (elementType)objectAtIndexedSubscript:(indexType)idx;- (void)setObject:(elementType)object atIndexedSubscript:(indexType)idx;// 对于类似字典的结构- (elementType)objectForKeyedSubscript:(keyType)key;- (void)setObject:(elementType)object forKeyedSubscript:(keyType)key;
0 0
- OC[NSNumber][NSDictionary]语法简写
- ios NSNumber NSArray NSDictionary 初始化简写
- OC的语法简写
- OC的语法简写
- OC--Foundation-NSDictionary,NSNumber,NSDate,NSValue
- OC语法之NSDictionary
- 黑马程序员 OC语言 - 9 NSDictionary、NSMutableDictionary、NSNumber、NSDate、NSValue
- OC第五讲(NSNumber,NSArray,NSDictionary,NSSet等)
- OC 学习笔记4 NSSet NSMutableSet NSDictionary NSMutableDictionary NSNumber NSValue
- [Objective-C] NSArray/NSDictionary/NSNumber 的语法糖
- OC-NSNumber
- OC NSNumber
- NSDictionary,NSArray的简写
- 5、NSValue、NSNumber、NSDictionary
- OC-NSDictionary
- OC-NSDictionary
- OC语法<4.3> Foundation框架中的集合类-NSDictionary
- NSDictionary 简写和文件操作
- JavaScript中的console.dir()函数介绍
- Python实践之网络编程1-简单的网络请求程序
- Hough变换原始形式-直线检测
- Matlab c++ 混编 记录, Matlab制作dll
- Math172FactorialTrailingZeroes
- OC[NSNumber][NSDictionary]语法简写
- Spring总结
- Android 应用内禁止截屏功能的实现
- LeetCode 88. Merge Sorted Array
- 构建自定义的Camera应用程序
- 轻松看懂机器学习十大常用算法
- Chrome 控制台console的用法
- HDU 5979 Convex(数学)
- 34. Search for a Range