Foundation框架-05 NSNumber和NSValue
2015-07-07 22:56
435 查看
Foundation框架-05 NSNumber和NSValue
1.NSNumber类
NSNumber可以将基本数据类型转换为对象类型将基本数据类型转换为NSNumer对象类型
NSNumber *valueNumber = [NSNumber numberWithInt:(基本数据类型)value];
将对象类型转换为基本数据类型
int value = [intNumber intVlue];
基本数据类型转换对象类型简写
NSNumber *temp = @(number);
NSNumber *temp =@10;
// 注意: 如果传入的是变量那么必须在@后面写上(), 如果传入的常量, 那么@后面的()可以省略
2.NSValue类
NSNumber是NSValue的子类, 但NSNumber只能包装数字类型,NSValue可以包装任意值利用NSValue包装常见的结构体
CGPoint point = CGPointMake(x,y);
NSValue *value = [NSValue valueWithPoint:point];//将point包装为NSValue对象
-(NSPoint)pointValue;//从对象中取出此前包转的结构体
利用NSValue包装自定义的结构体
typedef struct{ int age; char *name; double height; }Person; Person p = {30, "lnj", 1.75}; // valueWithBytes: 接收一个指针, 需要传递需要包装的结构体的变量的地址 // objCType: 需要传递需要包装的数据类型 NSValue *pValue = [NSValue valueWithBytes:&p objCType:@encode(Person)]; // 从NSValue中取出自定义的结构体变量 Person res; [pValue getValue:&res];
3.注意点
由于NSArray\NSDictionary中只能存放OC对象,不能存放int\float\double等基本数据类,如果真想把基本数据(比如int)放进数组或字典中,需要先将基本数据类型包装成OC对象一般若是包装基本数据类型,使用NSNumber,包装构造类型或自定义构造类型时使用NSValue
相关文章推荐
- Mac Error Create Android Project - “Errors running builder 'Android Resource Manager' on project”
- DicomIoException: Requested 132 bytes past end of fixed length stream.
- Dynamics CRM 2015 Update 1 系列(7): 消息事务 - ExecuteTransactionRequest
- UI_UIScrollView/UIpageControl
- Android view中的requestLayout和invalidate方法
- IOS UITextView 提交建议反馈
- DirectUI界面编程(零)简介
- DirectUI界面编程(零)简介
- DirectUI界面编程(零)简介
- 【LeetCode】232. Implement Queue using Stacks
- Implement Queue using Stacks
- [刷题]N-Queens
- UITableViewCell动态计算高度
- Bluetooth: ATT and GATT
- Implement Queue using Stacks
- 苹果开发 笔记(45)UILabel
- 【Arduino】8地点LED数码管(3461BS)
- 关于Uedit上传图片和文件的问题
- UVALive Proving Equivalences (强连通分量,常规)
- LeetCode Implement Queue using Stacks