前言

	@interface NSValue : NSObject <NSCopying, NSSecureCoding>
  • 将任意数据类型包装成 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]);

iOS - OC NSValue 值的更多相关文章

  1. iOS - Swift NSValue 值

    前言 public class NSValue : NSObject, NSCopying, NSSecureCoding 将任意数据类型包装成对象. 1.比较两个 NSValue 类型数据的大小 l ...

  2. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  3. ios+oc面试题

    ios+oc面试题     浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...

  4. 原 IOS之NSValue整理

    原 IOS之NSValue整理 发表于2年前(2013-02-28 23:02)   阅读(1974) | 评论(0) 5人收藏此文章, 我要收藏 赞3 IOS NSValue 值对象(value o ...

  5. ios 把毫秒值转换成日期 NSDate

    ios 把毫秒值转换成日期 (比较好用) 1343359790000 这是毫秒值------最佳解决方案-------------------- long long time=134335979000 ...

  6. iOS OC语言原生开发的IM模块--RChat

    iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...

  7. iOS - OC RunTime 运行时

    1.运行时的使用 向分类中添加属性 // 包含运行时头文件 #import <objc/runtime.h> /* void objc_setAssociatedObject(id obj ...

  8. iOS - OC Category 分类

    1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...

  9. iOS - OC 语言新特性

    前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...

随机推荐

  1. centos7重启rsyslog服务|centos7重启syslog服务

    centos7重启rsyslog服务: systemctl restart rsyslog 使用:(killall无效) killall -HUP rsyslog

  2. Caused by: java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/i

    Caused by: java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/i ...

  3. ThinkPHP跳转与重定向的区别在哪里

    跳转: 浏览器认为 : 当前 URL 请求成功 , 重新请求新的 URL . 浏览器会记录当前的 URL 和新的 URL 在请求历史记录中. 回退, 是可以回退到 , 当前的 URL 上的 . ( 无 ...

  4. 25、oracle(一)

    1)了解oracle背景,概念和特点 2)掌握oracleSQL对单表各种查询操作 3)掌握oracleSQL中函数的使用 4)掌握数值型number,字符串型varchar2,日期型date,条件判 ...

  5. WMsg参数常量值

    //WMsg参数常量值: //创建一个窗口 const int WM_CREATE = 0x01; //当一个窗口被破坏时发送 const int WM_DESTROY = 0x02; //移动一个窗 ...

  6. 关于left join、right join和inner join

    总结, 1.select * from A left join B on A.XX=B.XX 左侧显示A的列名,右侧显示B的列名 左侧,显示A表的所有列 右侧, A.XX=B.XX的时候,显示B表的列 ...

  7. Andorid 编程 系统环境安装

    内网环境下安装: 1.配置源 :找到公司内部整理的源文件中的内容,将其内容拷贝到系统 源文件 中,并注释掉所有外网链接(如果公司支持内部环境配置,通常会有一个内部源文件)  2.安装jdk, ecli ...

  8. DataRow数组转换DataTable

    public DataTable ToDataTable(DataRow[] rows) { if (rows == null || rows.Length == 0) return null; Da ...

  9. 遍历寻找json中的重复数据

    string str = "[{\"ID\":1,\"Data\":{\"subjectCode\":\"1\" ...

  10. 检索 COM 类工厂中 CLSID 为 {} 的组件时失败,原因是出现以下错误: 80070005

    检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005.跟踪了一下,结果是将记录导出 ...