zoukankan      html  css  js  c++  java
  • Objective-C( Foundation框架 一 NSNumber(NSValue))

    NSNumber: 是OC中处理数字的一个类

    NSValue是NSNumber的子类

    如何处理:

    把int,float,double  包装成一个对象

    使用NSNumber的好处:

    可以把基本数据类型的数据,保存到数组或字典中

    // 定义基本数据类型
            int a = 10;
            float b = 2.2f;
            double d = 1.22;
            
            int x = 100;
           
            // int 包装成 NSNumber
            NSNumber *intObj = [NSNumber numberWithInt:a];
            NSMutableArray *array = [NSMutableArray arrayWithObjects: intObj, nil];
            
            // float 包装成 NSNumber
            NSNumber *floatObj = [NSNumber numberWithFloat:b];
            // 把对象添加到数组中
            [array addObject:floatObj];
            
            // double 包装成 NSNumber
            NSNumber *doubleObj = [NSNumber numberWithDouble:d];
            // 把对象添加到数组中
            [array addObject:doubleObj];
            
            // @数值,把数值包装成对象,快速简单的方法
            [array addObject:@(x)];
            NSLog(@"%@",array);
            
            // 数组的第一个元素和第二个元素相加
            NSNumber *n1 = array[0]; // 取出第0位元素
            int a1 = [n1 intValue];
            NSNumber *n2 = array[1]; // 取出第1位元素
            float a2 = [n2 floatValue];
            
            //a1 = a1+a2;
            // 简洁
            a1 = [array[0] intValue] +[array[1] floatValue];
            NSLog(@"%d",a1);
            

    NSValue:主要是用来把指针,CGRect结构体等包装成OC对象,以便储存

        CGPoint p1 = CGPointMake(3, 5);
        CGRect r1 = CGRectMake(0, 3, 5, 9);
        NSMutableArray *arr = [NSMutableArray array];
        // p1包装成 obj
        NSValue *pointValue = [NSValue valueWithPoint:p1];
        
        // 把对象存到数组中
        [arr addObject:pointValue];
        // 把r1 包装成 NSValue对象
        [arr addObject:[NSValue valueWithRect:r1]];
        NSLog(@"%@",arr);
        
        // 取出r1 的值
        NSValue *r1Value = [arr lastObject];
        NSRect r2 = [r1Value rectValue];
        
        NSLog(@"%@", NSStringFromRect(r2));

    包装struct

    // 定义日期结构体
    typedef struct Date
    {
        int year;
        int month;
        int day;
        
    } MyDate;
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // 年—月-日
            MyDate nyr = {2015, 9, 11};
            
            // @encode(MyDate)作用,把MyDate类型生成一个常量字符串描述
            NSValue *val = [NSValue valueWithBytes:&nyr objCType:@encode(MyDate)];
            
            // 定义一个数组,把val存到数组中
            NSMutableArray *arr = [NSMutableArray arrayWithObject:val];
            /*
             从数组中取出来NSValue对象
             从对象中,取出结构体变量的值
             传入一个结构体变量的地址
             */
            MyDate tmd;
            [val getValue:&tmd];
            NSLog(@"%d, %d. %d",tmd.year, tmd.month, tmd.day);
            
  • 相关阅读:
    博客园设置自定义页面[布局][样式]
    linux的hostname文件目录
    mybatis底层源码分析之--配置文件读取和解析
    Enum的使用
    easyUI datagrid笔记
    软工实践第二次作业-黄紫仪
    软工实践第一次作业-黄紫仪
    第五次作业--原型设计
    作业三
    作业二
  • 原文地址:https://www.cnblogs.com/1023843587qq/p/4802156.html
Copyright © 2011-2022 走看看