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. CSS 设计彻底研究(五)文字与图像

    第五章 文字与图像 5.1.2 设置字体 通过font-family属性设置字体.可以声明多种字体,字体之间用逗号分隔开.如一些字体名称中间有空格,需用双引号将其引起来,使浏览器知道这是一种字体的名称 ...

  2. 关于DCLP实现的单例模式的一些想法

    关于DCLP实现的单例模式的一些想法 我之前写过单例的文章( http://www.cnblogs.com/mkdym/p/4908644.html ),但是现在又有了一些想法,不想再在原来那篇文章上 ...

  3. Android 6.0 闪光灯的使用

    Android6.0 已经抛弃了Camer 相关的API,改用新的API接口CamerManager,下面给出使用的简单实例 package com.inper.duqiang.slashlight; ...

  4. jetty 8.1.8 PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required

    应该是jdk和jre配置问题,建议看看这个博客:http://blog.csdn.net/nba_2011/article/details/7219750里边查看配置方法很清楚

  5. HTTP之I/O模型图MPM详细解析

    高度模块化:DSO MPM:多路处理模块      prefork-->一个主进程+多个工作进程,每个工作进程处理多个请求      worker-->一个主进程+多个工作进程,每个工作进 ...

  6. mysql trigger 权限的说明

    普通用户在创建trigger时会遇到的问题: 1.如果开启了二进制日志,但是用户没有supper 权限:那么他在创建trigger 时会提示设置log_bin_trust_function_creat ...

  7. Window 点击“X”关闭之后无法show

    将Window的属性closeAction设置为hide就可以了. var panel1 = Ext.create('Ext.panel.Panel', { title: 'this is panel ...

  8. Java--static interface

    http://stackoverflow.com/questions/8374646/what-is-a-static-interface-in-java http://stackoverflow.c ...

  9. ***.M51文件详细注释

    ;说明:这是1950编译后生成的Keil_1910.M51文件,以此为例来讲解M51文件 // :: PAGE BL51 BANKED LINKER/LOCATER V6., INVOKED BY: ...

  10. Redhat关闭SELinux和防火墙的办法(转)

    Redhat使用了SELinux来增强安全,关闭的办法为:1. 永久有效修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重 ...