NSInteger、NSUInteger NSValue总结
来源:互联网 发布:共识网被关闭 知乎 编辑:程序博客网 时间:2024/06/07 04:56
在Objective-C中,我们可以使用c中的数字数据类型,int、float、long等。它们都是基本数据类型,而不是对象。也就是说,不能够向它们发送消息。然后,有些时候需要将这些值作为对象使用。
NSInteger、NSUInteger
NSNumber
NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等。NSInteger intVal=123;
NSNumber*numberVal=[NSNumber numberWithInteger:intVal];NSMutableArray* array=[NSMutableArray array];
[array addObject:intVal];//错误,intVal不是一个对象类型
[array addObject:numberVal];//正确
+(NSNumber*)numberWithChar:(char)value;
+(NSNumber*)numberWithInt:(int)value;
+(NSNumber*)numberWithDouble:(double)value;
+(NSNumber*)numberWithFloat:(float)value;
+(NSNumber*)numberWithBool:(BOOL) value;
...
-(char)charValue;
-(int)intValue;
-(float)floatValue;
-(double)doubleValue;
-(BOOL)boolValue;
...
NSValue类
NSNumber是NSValue的子类。NSValue可包装任意类型值。
当你不知道程序运行哪种处理器架构时,你最好使用NSInteger,因为在有可能int在32位系统中只是int类型,而在64位系统,int可能变是long型。除非不得不使用int/long型,否则推荐使用NSInteger。
从上面的定义可以看出NSInteger/NSUInteger是一种动态定义的类型,在不同的设备,不同的架构,有可能是int类型,有可能是long类型。
NSUInteger是无符号的,即没有负数,NSInteger是有符号的。
有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?
Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。
将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:
我们说像数组这样的Foundation集合只能存储对象,不能存储像int这样的基本数据类型.但是我们往往也会有这样的需求,例如需要将CGPoint或是CGRect这样的结构存储在集合中.一个NSValue对象是用来存储一个C或者Objective-C数据的简单容器。它可以保存任意类型的数据,比如int,float,char,当然也可以是指pointers, structures, and object ids。NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里.这种结构转化为对象的方式,不就是java中的装箱(boxing)吗?不过在Objective-C中称为包装(wraping),相反的,从对象中解出基本类型,称为展开(unwraping),在java中叫拆箱(unboxing).
NSNumber 继承自NSObject,可使用compare、isEqual等消息。
- NSInteger、NSUInteger NSValue总结
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- NSNumber,NSInteger,NSUInteger
- int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber
- NSInteger NSUInteger NSNumber
- NSInteger、NSUInteger、CGFloat
- NSInteger,NSUInteger,NSNumber比较
- int,NSInteger,NSUInteger,NSNumber
- NSInteger 与 NSUInteger 区别
- NSInteger和NSUInteger的区别
- IOS int,NSInteger,NSUInteger,NSNumber
- int,NSInteger,NSUInteger,NSNumber区别
- NSInteger和NSUInteger,int区别
- cocos2dx 3.0 学习之路1篇 --搭建基础环境
- Java的垃圾回收机制
- C++中的字符串指针和字符数组
- 开通C博的第一篇文章
- js对当天日期的下一天与下一天的操作
- NSInteger、NSUInteger NSValue总结
- 简述Cocos2D-X中的内部函数
- 生成一定范围的随机数
- log --properties格式
- OC最后一天
- 堆排序 Java
- iOS 图片转视频
- web 性能优化方案
- 最接近原生APP体验的高性能前端框架