Foundation框架(12)——NSValue的使用

//
//  main.m
//  Foundation框架(12)
//
//  Created by Mac on 15-1-24.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import 
   
   
    
    

#pragma mark 将结构体转成OC对象
void value(){

    // OC中的数组只能装OC对象,结构体不是对象!!!
    CGPoint point = CGPointMake(11, 21);
    // 将结构体变量包装成一个对象,然后放到数组中去
    NSValue *value = [NSValue valueWithPoint:point];
    
    NSMutableArray *array = [NSMutableArray array];
    
    [array addObject:value];
    
    NSLog(@"array = %@", array);// array = ("NSPoint: {11, 21}"}
    
    
    // 取出结构体对应的对象
    NSValue *value2 = [array lastObject];
    // 用pointValue方法取出结构
    CGPoint point2 = [value2 pointValue];
    
    NSString *str = NSStringFromPoint(point2);
    
    NSLog(@"str = %@", str);// str = {11, 21}
    

}

typedef struct {

    int year;
    int month;
    int day;

} Date;

#pragma mark 将自定义的结构体转成OC对象
void value2(){

    Date date = {2015, 1, 24};
    // 根据结构体类型生成对应的类型描述字符串
    char *type = @encode(Date);
    // value:void *, void *表示没有类型的指针,也就是任何类型的指针
    NSValue *value = [NSValue value:&date withObjCType:type];
    
    Date date2;
    // 取出包装好的结构体,这里没有返回值,传入的参数是date2的内存地址,理解!!!
    [value getValue:&date2];
    
    // 取出类型描述字符串
//    [value objCType];
    
    NSLog(@"year = %i, month = %i, day = %i", date2.year, date2.month, date2.day);
    // year = 2015, month = 1, day = 24
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
//        value();
        value2();
        
    }
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值