NSValue 值
前言
- 将任意数据类型包装成 OC 对象
1、比较两个 NSValue 类型数据的大小
NSValue *value1 = [NSValue valueWithPoint:NSMakePoint(10, 32)];
NSValue *value2 = [NSValue valueWithPoint:NSMakePoint(10, 32)];
// isEqualToValue
BOOL bl = [value1 isEqualToValue:value2];
if (bl) {
NSLog(@"value1 == value2");
} else {
NSLog(@"value1 != value2");
}
2、NSValue 与 OC 数据类型的相互转换
// 将 OC 数据类型转换成 NSValue
NSValue *value1 = [NSValue valueWithPoint:NSMakePoint(10, 32)];
// 将 NSValue 转换成 OC 数据类型
NSPoint point = [value1 pointValue];
NSLog(@"x: %.0f, y: %.0f", point.x, point.y);
3、NSValue 与 自定义数据类型 的相互转换
// 将 自定义数据类型 转换成 NSValue
// 自定义结构体
typedef struct { int year; int month; int day; } MyDate;
MyDate date = {2016, 1, 11};
// 取要转换的数据的地址
void *valueAdd = &date;
// 将自定义数据类型装换成 C 语言字符串
char *objCType = @encode(MyDate);
// 对象方法,将自定义数据类型转换成 NSValue
NSValue *value2 = [[NSValue alloc] initWithBytes:valueAdd objCType:objCType];
// 类方法,将自定义数据类型转换成 NSValue
NSValue *value3 = [NSValue valueWithBytes:&date objCType:@encode(MyDate)];
// 将 NSValue 转换成 自定义数据类型
MyDate date1;
MyDate date2;
// 从 NSValue 中取出的值放到 &date1 中
[value2 getValue:&date1];
// 从 NSValue 中取出的值放到 &date2 中
[value3 getValue:&date2];
NSLog(@"%i, %i, %i", date1.year, date1.month, date1.day);
NSLog(@"%i, %i, %i", date2.year, date2.month, date2.day);
// 从 NSValue 中取出自定义的数据类型
const char *type = [value2 objCType];
NSLog(@"%@", [NSString stringWithUTF8String:type]);
NSValue 值的更多相关文章
- iOS - OC NSValue 值
前言 @interface NSValue : NSObject <NSCopying, NSSecureCoding> 将任意数据类型包装成 OC 对象 1.比较两个 NSValue 类 ...
- iOS - Swift NSValue 值
前言 public class NSValue : NSObject, NSCopying, NSSecureCoding 将任意数据类型包装成对象. 1.比较两个 NSValue 类型数据的大小 l ...
- 原 IOS之NSValue整理
原 IOS之NSValue整理 发表于2年前(2013-02-28 23:02) 阅读(1974) | 评论(0) 5人收藏此文章, 我要收藏 赞3 IOS NSValue 值对象(value o ...
- ios CGRect
/* rect(x,y,width,height); width, height正负代表了从原点的绘制方向,矩形的长宽都是取得绝对值 */ // Do a ...
- UIImagePickerController 相关
UIImagePickerController是系统封装好的一个导航视图控制器,使用其开发者可以十分方便的进行相机相册相关功能的调用.UIImagePickerController继承于UINavig ...
- iOS开发系统类功能划分
0.OC语法基础 CHOCBase Object C语法学习笔记(一) Object C语法学习笔记(二) 1.UI类 自定义控件程序运行流程 setNeedsLayOut和setNeedsDispl ...
- CHNS类
NS类集合介绍 1.常用部分 NSDictionary NSString NSArray 数组 NSTimer 定时器 NSRange 范围 NSNotification 2.网络相关 NSURLCo ...
- Objective - c Foundation 框架详解2
Objective - c Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...
- Objective - C 值对象 NSNumber和NSValue
在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因. 简而言之,NSNumber就是实现 ...
随机推荐
- (转).Net基础体系和跨框架开发普及
在园子里看到了一篇关于.net体系及框架开发的文章,感触颇深,身为一个.net程序员,发现自己在这方面的跟进和理解远远不够.转到自己这里,分享的同时方便日后查看. 原文链接: http://www.c ...
- dB2 索引相关
ALTER TABLE "XXXX"."tableA" PCTFREE 20 ; CREATE INDEX "schema"."X ...
- MVC中Ajax post 和Ajax Get——提交对象Model
HTTP 请求:GET vs. POST两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST.GET - 从指定的资源请求数据POST - 向指定的资源提交要处理的数据GET 基本上 ...
- thingsboard在windows下安装和使用
在官网下载thingsboard和tb-gateway 需要安装java8 thingsboard服务安装 https://thingsboard.io/docs/user-guide/install ...
- Win8.1(64bit) Hyper-V 安装Ubuntu 14.04LTS(64 bit)
为了学习在Linux平台下开发,时隔将近一年多,重新搭建开发环境. 写文档确实很费时间,不过还是很有必要写的,这么一个简单的事情花了接近3个小时才算最终大功告成. 像这种连环嵌套的问题,一旦超过了1个 ...
- Linux系统SCSI磁盘扫描机制解析及命令实例(转)
转载请在文首保留原文出处:EMC中文支持论坛 介绍 Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命 ...
- JAVA简单的文件I/O操作实例
如果只是对文件进行普通的读写,可以不用文件流. 以下是实例: File file = new File("test1.txt"); //向文件写入数据的 PrintWriter p ...
- leetcode700
class Solution { public: TreeNode* searchBST(TreeNode* root, int val) { if (root == NULL) { return n ...
- 利用jquery mobiscroll插件选择日期、select、treeList的具体运用
体验更优排版请移步原文:http://blog.kwin.wang/programming/jquery-mobiscroll-select-treeList.html mobiscroll是个很好用 ...
- AMFObject 数据格式浅析
amf.h中关于 AMFObject 是这样的定义的: typedef struct AMFObject { int o_num; struct AMFObjectProperty *o_props; ...