zoukankan      html  css  js  c++  java
  • Objective-C:Foundation框架-常用类-NSValue

      NSNumber是NSValue的子类,前者只能包装数字,后者可以包装任意值。NSArray、NSDictionary只能存储OC对象,不能存储结构体。因此,如果想要在NSArray、NSDictionary里放结构体,可以曲线救国,将结构体包装成OC对象,再放到NSArray、NSDictionary等集合类中。

    void value() {
        CGPoint point = CGPointMake(10, 10);
        // 将结构体变量包装成一个对象
        NSValue *value = [NSValue valueWithPoint:point];
        
        NSMutableArray *array = [NSMutableArray array];
        // 添加value
        [array addObject:value];
        
        // 取出当时放进去的value
        NSValue *value1 = [array lastObject];
        CGPoint point1 = [value1 pointValue];
        
        BOOL result = CGPointEqualToPoint(point1, point);
        NSLog(@"result=%i", result);
    }
    
    
    typedef struct {
        int year;
        int month;
        int day;
    } Date;
    void value2() {
        Date date = {2013, 4, 7};
        // void *代表任何指针
        // 这里要传结构体的地址&date
        
        // 根据结构体类型生成 对应的 类型描述字符串
        char *type = @encode(Date);
        NSValue *value = [NSValue value:&date withObjCType:type];
        
        
        // 定义一个结构体变量
        Date date1;
        
        // 取出包装好的结构体
        [value getValue:&date1];
        
        // [value objCType];  取出类型描述字符串
        
        NSLog(@"year=%i, month=%i, day=%i", date1.year, date1.month, date1.day);
    }
  • 相关阅读:
    冷门JS技巧
    JavaScript小技巧整理篇(非常全)
    JS实现标签页切换效果
    MySQL主从配置详解
    mysql主从复制(超简单)
    1.4isAlive()方法
    1.3currentThread()方法
    1.2.4注意Sysyem.out.println与i--
    1.2.3实例变量与线程安全
    1.2.2实现Runnable接口
  • 原文地址:https://www.cnblogs.com/yif1991/p/5068262.html
Copyright © 2011-2022 走看看