NSValue 值
NSValue : NSObject
原始创建
int len = 2;
Byte *bytes = malloc(sizeof(Byte) * len);
bytes[0] = 0x00;
bytes[1] = 0x0f;
NSValue *value = [[NSValue alloc] initWithBytes:bytes objCType:@encode(char *)];
NSValue *value2 = [NSValue valueWithBytes:bytes objCType:@encode(int)];
拓展创建 NSValueExtensionMethods
搞出来的 value 都是内容地址的高低位倒置?什么用?
弱引用
NSString *str = @"123";
NSValue *value1 = [NSValue valueWithNonretainedObject:str];// 地址高低位反了?
id v1 = value1.nonretainedObjectValue;
指针
typedef struct{
int a ;
float b ;
} DataItem ;
DataItem *data = (DataItem*)malloc(sizeof(DataItem)) ;
data->a = 1 ;
data->b = 2 ;
NSValue *value2 = [NSValue valueWithPointer:data] ;
void *v2 = value2.pointerValue;
其他
BOOL eq = [value1 isEqualToValue:value2];
const char *type = value1.objCType;
拓展 NSValueRangeExtensions
// 范围 <-> value
NSValue *value = [NSValue valueWithRange:NSMakeRange(2, 3)];
NSRange range4 = value.rangeValue;
iOS 11
[value1 getValue:v2 size:2];