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

NSValue是NSNumber的子类

如何处理:

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

使用NSNumber的好处:

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

// 定义基本数据类型
int a = ;
float b = 2.2f;
double d = 1.22; int x = ; // 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位元素
int a1 = [n1 intValue];
NSNumber *n2 = array[]; // 取出第1位元素
float a2 = [n2 floatValue]; //a1 = a1+a2;
// 简洁
a1 = [array[] intValue] +[array[] floatValue];
NSLog(@"%d",a1);

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

    CGPoint p1 = CGPointMake(, );
CGRect r1 = CGRectMake(, , , );
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 = {, , }; // @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);

Objective-C( Foundation框架 一 NSNumber(NSValue))的更多相关文章

  1. Objective - c Foundation 框架详解2

    Objective - c  Foundation 框架详解2 Collection Agency Cocoa provides a number of collection classes such ...

  2. Objective-C:Foundation框架-常用类-NSValue

    NSNumber是NSValue的子类,前者只能包装数字,后者可以包装任意值.NSArray.NSDictionary只能存储OC对象,不能存储结构体.因此,如果想要在NSArray.NSDictio ...

  3. [OC Foundation框架 - 12] NSNumber

    1.概念 NSArray,NSDictionary只能放OC对象,不能放入基本数据类型 必须使用包装类NSNumber,把基本数据类型包装成OC对象 不支持自动包装解包   void number() ...

  4. iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合

    1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...

  5. (转载)OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

    前一篇说到了Foundation框架中的NSDirctionary类,这一一篇来看一下Foundation的其他常用的类:NSNumber,NSDate,NSException. 注:其实按照Java ...

  6. OC学习篇之---Foundation框架中的其他类(NSNumber,NSDate,NSExcetion)

    1.NSNumber 这个类主要是用来封装基本类型的,说到这里,就不得不说一下了: OC中的集合是不允许存入基本类型的,所以NSNumber类就诞生了,需要将基本类型封装一下,然后存进去,这个类似于J ...

  7. Foundation框架下的常用类:NSNumber、NSDate、NSCalendar、NSDateFormatter、NSNull、NSKeyedArchiver

    ========================== Foundation框架下的常用类 ========================== 一.[NSNumber] [注]像int.float.c ...

  8. 黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate

    Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数 ...

  9. Foundation框架中的NSNumber对象详解

    到目前为止,我们所讨论过的所有数字数据类型,如int型.float型和long型都是Objective-C语言中的基本数据类型,也就是说,它们都不是对象.例如,不能向它们发送消息.然而,有时需要作为对 ...

随机推荐

  1. java udp与tcp

    一:基础  NET基本对象java.net.InetAddress类的使用 IP地址是IP使用的32位(IPv4)或者128位(IPv6)位无符号数字,它是传输层协议TCP,UDP的基础.InetAd ...

  2. Cocosd-x的坐标系

    OpenGL 坐标系 :   原点在屏幕左下角,x 轴向右,y 轴向上. UI坐标体系       :   原点在屏幕左上角,x 轴向右,y 轴向下. 屏幕坐标系:    UI 世界坐标系:  也叫绝 ...

  3. python网络编程-socket

    python提供了两个socket模块 Socket,它提供了标准的BSD Sockets API SocketServer,它提供了服务器中心类,可以简化网络服务器的开发 下面先说socket模块 ...

  4. nRF52832开发日志--SAADC调试

    今天各种事情比较多.......技术活时间略少,就搞了这一项~ 52832的ADC和之前51822系列还是有蛮大差别的: 1.支持差分输入方式,测量结果为两输入端口电压差的转换的有符号数值,这个功能对 ...

  5. 【leetcode❤python】 204. Count Primes

    #-*- coding: UTF-8 -*- #Hint1:#数字i,i的倍数一定不是质数,因此去掉i的倍数,例如5,5*1,5*2,5*3,5*4,5*5都不是质数,应该去掉#5*1,5*2,5*3 ...

  6. php 5.3新增的闭包语法介绍function() use() {}

    * 下面提到的代码在PHP5.3以上版本运行通过. */function callback($callback) { $callback();}//输出: This is a anonymous fu ...

  7. 新课程开始的第二天,HTML基础制作

    天正式开始学习HTML的基础制作,有简单的指令开始入手. 第一天的学习,因为基础,所以觉得还算简单,主要是对网页背景.图片.文字.表格等的编辑,和一部分链接的使用. 由下面的的一个事例,通过所学的简单 ...

  8. 关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结

    起因:工作用经常用到操作数组的方法,这里进行一下总结,我尽量以简洁的语言概括每个方法(api)的作用.如果您想快速定位,可以Control+F 然后搜相应的方法即可定位 :) ES3的数组方法 joi ...

  9. Javascript学习笔记:闭包题解(1)

    代码: function createFunctions(){ var result=[]; for(var i=0;i<10;i++){ result[i]=function(){ retur ...

  10. css3 三角形

    https://jsbin.com/gexezo/edit?html,css,output https://jsbin.com/gexezo