• iOS


    前言

    	@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]);
    
  • 相关阅读:
    golang与vscode的安装与配置
    numpy学习之前的必要数学知识:线性代数
    分布式系统设计系列 -- 基本原理及高可用策略
    微服务的4个设计原则和19个解决方案
    JAVA8 十大新特性详解
    ConcurrentHashMap总结
    Java NIO理解与使用
    深入了解 Java-Netty高性能高并发理解
    java内存泄漏的定位与分析
    Netty高性能编程备忘录(下)
  • 原文地址:https://www.cnblogs.com/QianChia/p/5782739.html
Copyright © 2020-2023  润新知