黑马程序员--NSValue的使用
2015-10-11 13:50
363 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
NSNumber是NSValue的子类,NSValue主要用来把指针、CGRect结构体等包装成OC对象,以便存储。
NSValue的简单应用
//创建一个结构体变量,保存点
// p1 是CGPoint类型的结构体变量
CGPoint p1 = CGPointMake(20, 50);
NSRect r1 = NSMakeRect(0, 0, 200, 100);
//创建数组
NSMutableArray *arr = [NSMutableArray array];
// p1--->obj
//valueWithPoint 把结构体转变成NSValue对象
NSValue *pointVal = [NSValue valueWithPoint:p1];
//把对象存放在数组中
[arr addObject:pointVal];
[arr addObject:[NSValue valueWithRect:r1]];
NSLog(@"%@",arr);
//取出 r1 的值
//rectValue 从 NSValue 对象中,取得NSRect类型的值
NSValue *r1Val = arr[1];
NSRect r2 = [r1Val rectValue];
NSLog(@"%@",NSStringFromRect(r2));
}
使用NSValue把自定义结构体包装成OC对象的例子
typedef struct{
int year;
int month;
int day;
}MyDate; //MyDate是一个别名
int main(int argc, const char * argv[]) {
@autoreleasepool {
test();
//保存 一个 年月日
MyDate md = {2015,10,9};
//@encode(MyDate) 作用,把MyDate类型生成一个常量字符串描述
NSValue *val = [NSValue valueWithBytes:&md objCType:@encode(MyDate)];
//定义一个数组,把val存到数组中
NSMutableArray *arr = [NSMutableArray arrayWithObject:val];
//从数组中取出来NSValue对象
//从对象中取出结构体变量的值
//传入一个结构体变量的地址
MyDate tmd;
//getValue获取结构体的值,保存到结构体变量tmd
[val getValue:&tmd];
NSLog(@"%d-%d-%d",tmd.year,tmd.month,tmd.day);
}
return 0;
}
运行结果为:
NSNumber是NSValue的子类,NSValue主要用来把指针、CGRect结构体等包装成OC对象,以便存储。
NSValue的简单应用
//创建一个结构体变量,保存点
// p1 是CGPoint类型的结构体变量
CGPoint p1 = CGPointMake(20, 50);
NSRect r1 = NSMakeRect(0, 0, 200, 100);
//创建数组
NSMutableArray *arr = [NSMutableArray array];
// p1--->obj
//valueWithPoint 把结构体转变成NSValue对象
NSValue *pointVal = [NSValue valueWithPoint:p1];
//把对象存放在数组中
[arr addObject:pointVal];
[arr addObject:[NSValue valueWithRect:r1]];
NSLog(@"%@",arr);
//取出 r1 的值
//rectValue 从 NSValue 对象中,取得NSRect类型的值
NSValue *r1Val = arr[1];
NSRect r2 = [r1Val rectValue];
NSLog(@"%@",NSStringFromRect(r2));
}
使用NSValue把自定义结构体包装成OC对象的例子
typedef struct{
int year;
int month;
int day;
}MyDate; //MyDate是一个别名
int main(int argc, const char * argv[]) {
@autoreleasepool {
test();
//保存 一个 年月日
MyDate md = {2015,10,9};
//@encode(MyDate) 作用,把MyDate类型生成一个常量字符串描述
NSValue *val = [NSValue valueWithBytes:&md objCType:@encode(MyDate)];
//定义一个数组,把val存到数组中
NSMutableArray *arr = [NSMutableArray arrayWithObject:val];
//从数组中取出来NSValue对象
//从对象中取出结构体变量的值
//传入一个结构体变量的地址
MyDate tmd;
//getValue获取结构体的值,保存到结构体变量tmd
[val getValue:&tmd];
NSLog(@"%d-%d-%d",tmd.year,tmd.month,tmd.day);
}
return 0;
}
运行结果为:
相关文章推荐
- [BZOJ1626] [Usaco2007 Dec]Building Roads 修建道路
- Leetcode Unique Word Abbreviation
- 快速排序quicksort
- 创建自己的循环Queue底层使用数组java版
- IOS UIBarButtonItem 位置偏移的问题
- 给iOS工程增加Daily Build
- 创建自己的Queue底层实现是链表
- 创建自己的队列Queue底层实现利用数组
- win10 Build 10558预览版《微软电话》应用曝光 内附下载
- 在storyBoard中添加UIScrollView并添加相应的约束
- UE4蓝图案例:制作实时反射镜面材质
- android 5.0UI特效
- poj 2778 DNA Sequence 【AC自动机 + 矩阵加速】
- 《腾讯网UED体验设计之旅》
- easyui-datagrid行数据field原样输出html标签
- lintcode 容易题:Unique Characters 判断字符串是否没有重复字符
- 【小白装系统】——硬盘分区表格式GUID和MBR知识普及
- UITableView自定义cell更换选中的背景色
- 【IOS 开发学习总结-OC-41】★★ios开发——代码控制 UI 界面与 UI 控件的自定义
- iOS-UITableViewController-cellForRowAtIndexPath不被调用