oc-Foundation_05_装箱和开箱——NSNumber_NSValue
来源:互联网 发布:淘宝网惊现美女火辣 编辑:程序博客网 时间:2024/06/13 12:14
- Foundation_05_装箱和开箱NSNumber_NSValue
- 一开箱装箱定义
- 二NSNumber装箱
- 三NSNumber开箱
- 1 代码示例
- 2 结果
- 四NSValue
- 1 代码示例
- 2 结果
- 3 其他便捷的方法
- 五NSNull
- 1 代码示例
- 2 结果
Foundation_05_装箱和开箱——NSNumber_NSValue
一、开箱装箱定义
基本数据类型数组——>对象 装箱(boxing)
对象——>基本数据类型数组 开箱(unboxing)
二、NSNumber装箱
+(NSNumber *)numberWithBool:(BOOL)value+(NSNumber *)numberWithChar:(char)value+(NSNumber *)numberWithDouble:(double)value+(NSNumber *)numberWithFloat:(float)value+(NSNumber *)numberWithInt:(int)value+(NSNumber *)numberWithInteger:(NSInteger)value+(NSNumber *)numberWithLong:(long)value+(NSNumber *)numberWithLongLong:(long long)value+(NSNumber *)numberWithShort:(short)value+(NSNumber *)numberWithUnsignedChar:(unsigned char)value+(NSNumber *)numberWithUnsignedInt:(unsigned int)value+(NSNumber *)numberWithUnsignedInteger:(NSUInteger)value+(NSNumber *)numberWithUnsignedLong:(unsigned long)value+(NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value+(NSNumber *)numberWithUnsignedShort:(unsigned short)value
或者如下操作
NSNumber *number; number = @'X';//字符 number = @123;//整型 number = @123ul;//无符号长整型 number = @123ll;//long long ....
三、NSNumber开箱
-(char)charValue - (int) intValue - (float)intValue - (BOOL)boolValue - (NSString*)stringValue
3.1 代码示例
void test(){ //方式一 //装箱 NSNumber *number = [NSNumber numberWithInt:23]; //装箱 NSLog(@"%d",[number intValue]); //方式二 //装箱 NSNumber *number2 = @'x'; //开箱 NSLog(@"%c",[number2 charValue]);}
3.2 结果
2015-08-16 19:31:17.487 08_Foundation04_开箱和装箱[1115:65797] 232015-08-16 19:31:17.489 08_Foundation04_开箱和装箱[1115:65797] x
四、NSValue
NSNumber实际上是NSValue的子类,NSValue可以封任何值。
+(NSValue*)valueWithBytes:(const void *) objCType:(const char *) type
传递的参数就是要封装数值的地址(&),描述这个数据类型的字符串可是使用@encode编译器指令来接收数据类型的名称并生成合适的字符串。
4.1 代码示例
typedef struct { int nid; char *fistName;}Xm;void test2(){ Xm xm = {12,"woshixiaoming"}; NSValue *value = [NSValue value:&xm withObjCType:@encode(Xm)]; Xm xm2; [value getValue:&xm2]; NSLog(@"%d",xm2.nid); NSLog(@"%s",xm2.fistName);}
4.2 结果
2015-08-16 20:14:07.059 08_Foundation04_开箱和装箱[1366:74106] 122015-08-16 20:14:07.064 08_Foundation04_开箱和装箱[1366:74106] woshixiaoming
4.3 其他便捷的方法
+(NSValue*)valueWithPoint:(NSPoint)apoint; +(NSValue*)valueWithSize:(NSSize)size; +(NSValue*)valueWithRect:(NSRect)rect; -(NSPoint)pointValue; -(NSSize)sizeValue; -(NSRect)rectValue;
五、NSNull
+(NSNull*)null;
[NSNull null]总是返回一样的数值,所以可以使用运算符 == 将该值与其他值进行比较。
5.1 代码示例
void test3(){ NSNull *nsNull = [NSNull null]; NSLog(@"%@",nsNull);}
5.2 结果
2015-08-16 20:29:00.423 08_Foundation04_开箱和装箱[1406:76512] <null>
0 0
- oc-Foundation_05_装箱和开箱——NSNumber_NSValue
- 致雅嵌入式工作室——arduino板和树莓派板开箱验货(图片)
- JAVA——装箱和拆箱
- Cubieboard 开箱和入门 | Name5566
- EasyARM i.mx287学习笔记——开箱试用总结
- 社区之星礼品开箱——感谢CSDN
- NVIDIA Jetson TX1 项目开发—开箱实验
- 装箱和取消装箱
- C#——装箱(boxing)和拆箱(unboxing)
- Java 进阶——自动装箱和自动拆箱
- Java 进阶——自动装箱和自动拆箱
- OC—NSNumber和NSString
- 黑马程序员—简道 C# 装箱和拆箱
- ios学习路线—Objective-C(装箱和拆箱)
- csgo开箱抽奖技巧和教程
- 20110607-装箱和取消装箱
- 装箱和取消装箱详解
- oc学习之Foundation框架--装箱和拆箱
- JVM处于全局停顿 本地代码可执行
- 回顾一下排序
- Python三目运算符
- iOS悬停
- iOS - 获取系统键盘所在View
- oc-Foundation_05_装箱和开箱——NSNumber_NSValue
- servlet请求转发与重定向的区别 简单易懂
- Spark编程指南入门之Java篇五-数据重组Shuffle介绍
- ViewPager和lisitView的组合使用
- python3.0 网络爬虫 5
- ArcPy列举字段
- 【问题处理】CocoaPods卡住在Updating local specs repositories的解决办法
- SpringBoot 文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"
- 自定义ImageView实现圆角图片和圆形图片