iOS - OC NSValue 值
前言
@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 值的更多相关文章
- iOS - Swift NSValue 值
前言 public class NSValue : NSObject, NSCopying, NSSecureCoding 将任意数据类型包装成对象. 1.比较两个 NSValue 类型数据的大小 l ...
- iOS - OC 面向对象语法
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...
- ios+oc面试题
ios+oc面试题 浅复制和深复制的区别?//浅拷贝和深拷贝答案:浅层复制(copy):只复制指向对象的指针,而不复制引用对象本身.//通过对象的指针来访问这个对象深层复制(mutableCo ...
- 原 IOS之NSValue整理
原 IOS之NSValue整理 发表于2年前(2013-02-28 23:02) 阅读(1974) | 评论(0) 5人收藏此文章, 我要收藏 赞3 IOS NSValue 值对象(value o ...
- ios 把毫秒值转换成日期 NSDate
ios 把毫秒值转换成日期 (比较好用) 1343359790000 这是毫秒值------最佳解决方案-------------------- long long time=134335979000 ...
- iOS OC语言原生开发的IM模块--RChat
iOS OC语言原生开发的IM模块,用于项目中需要原生开发IM的情况,具备发送文字.表情.语音.图片.视频等完整功能,包含图片预览视频播放等功能,此项目将会长期更新如有问题可以提出,我的邮箱:fshm ...
- iOS - OC RunTime 运行时
1.运行时的使用 向分类中添加属性 // 包含运行时头文件 #import <objc/runtime.h> /* void objc_setAssociatedObject(id obj ...
- iOS - OC Category 分类
1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...
- iOS - OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...
随机推荐
- oralce创建用户
oralce创建用户: sqlplus /nolog回车 -->conn esun/esun@esuntech; -->create user xlh identified by pass ...
- Oracle存储过程单步调试方法
oracle存储过程单步调试的方法 1.在要调试的过程上单击test,如下图所示: 2.出现如下界面时单击最左上方的按钮:,如下图所示: 3.单击后呈现如下画面: 其中: 表示要停止test; 表示要 ...
- python中时间的基本使用
格式化日期 我们可以使用 time 模块的 strftime 方法来格式化日期,: time.strftime(format[, t]) #!/usr/bin/python # -*- coding: ...
- 20150608_Andriod 发布方法
参考地址: http://www.jb51.net/article/42618.htm 第一步,在Eclipse中选择需要打包的项目,然后右键--选择Export,会弹出一个打包的提示框,如下图所示. ...
- Wormholes 分类: POJ 2015-07-14 20:21 21人阅读 评论(0) 收藏
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 35235 Accepted: 12861 Descr ...
- 算法大全(c,c++)
http://www.2cto.com/kf/201109/105758.html 算法大全(C,C++)一. 数论算法 1.求两数的最大公约数function gcd(a,b:integer):in ...
- hiho一下,第115周,FF,EK,DINIC
题目1 : 网络流一·Ford-Fulkerson算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho住在P市,P市是一个很大很大的城市,所以也面临着一个 ...
- mysqli报错(HY000/2002)
Warning: mysqli::mysqli(): (HY000/2002): 没有那个文件或目录 解决:把localhost 换成127.0.0.1就好了.
- Java提高篇---TreeMap
TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致 ...
- [bzoj1051] [HAOI2006]受欢迎的牛 (Tarjan+缩点)
强连通图,缩点 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受 ...