iOS - OC NSValue 值

简介: 前言 @interface NSValue : NSObject 将任意数据类型包装成 OC 对象1、比较两个 NSValue 类型数据的大小 NSValue *value1 = [NSValue valueWithPoint:NSMakePoint(10, 32)]; ...

前言

    @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]);
目录
相关文章
|
Swift iOS开发
iOS OC混编Swift 后者无法走断点
iOS OC混编Swift 后者无法走断点
80 0
|
安全 数据安全/隐私保护 iOS开发
iOS 初探代码混淆(OC)
自己做iOS开发也有几年的时间了,平时做完项目基本就直接打包上传到Appstore上,然后做上架操作了。但是最近,客户方面提出了代码安全的要求。说是要做代码混淆,这方面的工作之前从来没有接触过。然后就上网查了一下,原来有很多应用程序都做了代码混淆。看来是我固步自封了......
iOS 初探代码混淆(OC)
|
存储 Unix 编译器
|
存储 算法 iOS开发
|
Swift iOS开发 容器
iOS 仿支付宝银行卡界面(支持Swift/OC)
在有支付相关的APP中,都有对应的钱包,虽然现在的支付宝,微信支付很流行,但是都是需要绑定自己的银行卡,那么这个银行卡的卡包页面该怎么实现呢?在网上找了许久也没有找到合适的,那就索性自己造轮子。
377 0
|
编解码 Swift iOS开发
iOS 应用之间的跳转(OC&Swift)
iOS 应用之间的跳转(OC&Swift)
1072 0
iOS 应用之间的跳转(OC&Swift)
|
开发工具 Swift iOS开发
iOS 问题 1: OC项目导入swift三方库不兼容问题
iOS 问题 1: OC项目导入swift三方库不兼容问题
1072 0
iOS 问题 1: OC项目导入swift三方库不兼容问题
|
iOS开发
iOS逆向 04:OC反汇编(下)
iOS逆向 04:OC反汇编(下)
284 0
iOS逆向 04:OC反汇编(下)
|
编译器 iOS开发
iOS逆向 04:OC反汇编(上)
iOS逆向 04:OC反汇编(上)
184 0
iOS逆向 04:OC反汇编(上)
|
存储 缓存 编译器
iOS-底层原理 20:OC底层面试解析
iOS-底层原理 20:OC底层面试解析
464 0
iOS-底层原理 20:OC底层面试解析