1.NSNumber

在Objective-c中有int,float,char等基本数据类型,但这些基本数据类型并不是对象,而数组,字典,字符串等容器中存放的都是对象类型,因此我们需要用到NSNumber类型.

NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象。

<1>NSNumber类型的创建(关键词:都是以numberWith....开头+改变的数据的基本数据类型)

创建integer类型对象

NSNumber *intNumber = [NSNumber numberWithInteger:123];

NSLog(@"%i",[intNumber integerValue]);

创建long类型对象

NSNumber *myNumber = [NSNumber numberWithLong:0xababab];

NSLog(@"%lx",[myNumber longValue]);

创建char类型对象

NSNumber *myNumber = [NSNumber numberWithChar:'K'];

NSLog(@"%c",[myNumber charValue]);

<2>NSNumber类型转换为基本数据类型(关键词:NSNumber数据的名称+...value)

int i=[intNumber intValue];
 
if(intNumber isEqualToNumber: floatNumber){
}
NSNumber继承NSObject ,可以使用比较 compare: isEqual等消息.

2.NSValue

在C开发中常会用到结构体来帮助我们简单封装基本数据类型,在Objective-C中也可以使用结构体来完成数据类型的封装。

同时,Cocoa Touch还提供了一个NSValue来帮助我们更好地在开发中使用结构体。 我们可以使用NSValue来辅助我们实现一些简单数据结构的封装。

比如:定义了一个简单的结构体类型

-----------------------------------------------------------------------------

  typedef struct {

int id,

float height,

unsigned char flag

  }MyTestStruct;   //就可以使用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;  //创建新的MyTestStruct类型的数据来接收数据

    [value getValue:&theTestStruct];

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

  对于NSValue 类的使用,还有一个地方就是我们在iPhone显示点或者其它几何图形时。比如我们想取得用户在屏幕上的点击轨迹,此时首先我们想到的就是使用CGPoint这个结构体来保存每一次点击的数据。此时,我们就可以使用NSValue类别中的+valueWithCGPoint:来帮助我们来为CG Framework提供数据.

NSNumber 和 NSValue 的部分使用的更多相关文章

  1. NSNumber和NSValue

    在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因. 简而言之,NSNumber就是实现 ...

  2. NSNumber、NSValue、NSDate、NSObject

    注:OC中数组和字典只能存储OC对象不能存放基本数据类型. NSNumber NSNumber可以用来把一个基本数据类型包装成一个NSNumber类型的对象. NSNumber *number = [ ...

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

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

  4. 02-Foundation-NSMutableString、NSNumber、NSValue、NSDate、NSArray

    目录: 一.NSMutableString可变字符串 二.NSNumber数字对象 三.NSValue 四.NSDate日期对象 五.NSArray数组对象 回到顶部 一.NSMutableStrin ...

  5. OC NSNumber和NSValue和NSDate和NSData

    一 NSNumber // // main.m // 07-NSNumber // // Created by apple on 13-8-12. // Copyright (c) 2013年 itc ...

  6. NSNumber 与NSValue

    NSNumber与NSValue关系与作用 .由于集合里只能存放对象,不可以存放基本数据类型,所以我们有时候需要讲一些对象比如基本数据类型,结构体等存到NSDictionary NSArray中,我们 ...

  7. Objective-C( Foundation框架 一 NSNumber(NSValue))

    NSNumber: 是OC中处理数字的一个类 NSValue是NSNumber的子类 如何处理: 把int,float,double  包装成一个对象 使用NSNumber的好处: 可以把基本数据类型 ...

  8. Objective - C 值对象 NSNumber和NSValue

    在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因. 简而言之,NSNumber就是实现 ...

  9. NSDate,NSNumber,NSValue

    NSDate #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleas ...

随机推荐

  1. HttpWebRequest上传文件(Excel等)

    //上传代码/// <summary> /// 文件上传 /// </summary> /// <param name="strAddress"> ...

  2. Linq 标准查询操作符三

    本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ...

  3. 对list代理扩展功能

    package 动态代理扩展List; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; imp ...

  4. iOS-tableView点击下拉菜单

    #import "ViewController.h" @interface ViewController ()<UITableViewDataSource,UITableVi ...

  5. unity 打包 windows 运行 紫色 粉红色

    unity下建立了个小demo,在editer里面运行正常.如下 但是一旦打包发布到android或者windows下就出现了类似这种情况 这种一般是由于材质贴图的缺失,一般来说选定的默认贴图的话会打 ...

  6. hdu 2504

    Problem Description 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b.若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c. Input 第一 ...

  7. Qt根据类名创建对象(元对象反射)

    在java语言中,可以使用getObject(String)函数,从类名直接构建新的对象. 而在C++中是没有这种机制的,Qt虽然提供了元对象机制,但只可以获取对象的类名,不能反向构建. 这个问题我在 ...

  8. No.1_1 java语言基础_学习笔记

    import java.util.Scanner; public class HelloWorld { static final double PI=3.14; static int x=125; / ...

  9. jQuery模糊选择

    属性字头选择器(Attribute Contains Prefix Selector) jQuery 属性字头选择器的使用格式是 jQuery(‘[attribute|=value]‘) ,例如 jQ ...

  10. 检测.net framework 版本

    项目中,自己要制作asp.net项目的安装文件,由于项目依赖于.net framework 3.5 sp1,故需检测环境是否符合要求,才能安装程序 度娘找到检测方案:各.net版本对应的安装补录下都有 ...