NSValue

处理自定义结构体类型,方法 

1
2
3
+ (NSValue *)valueWithBytes:( const  void  *)value objCType:( const  char *)type
- (id)initWithBytes:( const  void  *)value objCType:( const  char  *)type
- ( void )getValue:( void  *)buffer

typedef struct {

             int id,

             float height,

             unsigned char flag

}MyTestStruct; 
        此时,我们就可以使用MyTestStruct这个结构体来很容易地封装数据。如

 

 

    MyTestStruct   myTestStruct;

        myTestStruct.id=1;

        myTestStruct.height=23.0;

        myTestStruct.flag='A';

        NSValue *value = [NSValue valueWithBytes:&myTestStruct objCType:@encode(MyTestStruct)]; 

        在我们想取出*value 中的数据时,可以使用如下方式:

 

 

MyTestStruct theTestStruct;

[valeu getValue:&theTestStruct]; 

之后就可以对theTestStruct的操作来取得其中的数据。


处理NSRange,方法 
1
2
+ (NSValue *)valueWithRange:(NSRange)range
- (NSRange)rangeValue
1
2
3
4
5
6
7
8
9
10
11
12
13
NSRange rangeA ;
rangeA.location = 0 ;
rangeA.location = 10 ;
// 创建NSRange的值对象
NSValue *rangeValue = [NSValue valueWithRange:rangeA] ;
// 重新获取值对象包含的值
NSRange rangeB = [rangeValue rangeValue] ;
NSLog(@ "%d,%d" ,rangeB.location , rangeB.length) ;  // 10,10


NSValue包装对象指针,CGRect结构体等

@interface NSValue (NSValueUIGeometryExtensions)   
    
+ (NSValue *)valueWithPointer:(const void *)pointer;//保存对象指针   
    
+ (NSValue *)valueWithCGPoint:(CGPoint)point;//保存CGPoint结构体   
+ (NSValue *)valueWithCGSize:(CGSize)size;//保存CGSize结构体   
+ (NSValue *)valueWithCGRect:(CGRect)rect;//保存CGRect结构体   
+ (NSValue *)valueWithCGAffineTransform:(CGAffineTransform)transform;   
+ (NSValue *)valueWithUIEdgeInsets:(UIEdgeInsets)insets;   
    
- (void *)pointerValue;   
- (CGPoint)CGPointValue;   
- (CGSize)CGSizeValue;   
- (CGRect)CGRectValue;   
- (CGAffineTransform)CGAffineTransformValue;   
- (UIEdgeInsets)UIEdgeInsetsValue;   
    
@end   


2
3
4
5
6
7
8
9
CGPoint origin = CGPointMake(10.0 , 10.0) ;          
NSValue *ptValue = [NSValue valueWithCGPoint:origin] ;
NSArray *ptArr = [NSArray arrayWithObject:ptValue];
NSValue *ptValueB = [ptArr objectAtIndex:0] ;
CGPoint originB = [ptValueB CGPointValue] ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值