oc的包装类 NSValue NSNumber

我们都知道oc是面向对象的,但是oc是由c语言扩展而来的,c语言中的int 等类型都不是对象,那么oc 是如何拥有“对象”特征的呢?

oc提供了NSValue 和 NSNumber 来封装c语言的基本类型,这样就具有来面向对象的特征了。。。

NSValue是NSNumber的父类。

NSValue代表更通用的包装类,可以包装 short int float char 对象id 指针  通过对这些的包装就可以添加到NSArray等集合中了;

NSNumber代表更具体的包装类,主要有三个方法:(xxx代表各种数据类型)

把基本类型的值包装成包装类的实例

1 numberWithxxx:

2 initWithxxx:

从包装中取出基本类型的值

3 xxxValue:

通过上面的方法可以看出 基本类型和包装类是相互转换的~~

时间: 2024-10-11 23:20:09

oc的包装类 NSValue NSNumber的相关文章

NSValue NSNumber NSData类

NSValue NSNumber NSData类 步骤1 NSValue 我们先看看NSValue能做什么: 一个NSValue对象是用来存储一个C或者Objective-C数据的简单容器.它可以保存任意类型的数据,比如 int,float,char,当然也可以是指pointer, structure, and object id.NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里,例如那些需要其元素是对象的数据结构,如NSArray或者NSSet 的实例.需要注意的是NSV

[OC Foundation框架 - 12] NSNumber

1.概念 NSArray,NSDictionary只能放OC对象,不能放入基本数据类型 必须使用包装类NSNumber,把基本数据类型包装成OC对象 不支持自动包装解包 1 void number() 2 { 3 NSNumber *number = [NSNumber numberWithInt:10]; 4 NSMutableArray *array = [NSMutableArray array]; 5 [array addObject:number]; 6 7 NSLog(@"%@&qu

OC基础数据类型之NSNumber

假如你能够很轻松的理解NSString的定义和用法,那么NSNumber的话联想一下你就大概能够明白其中的道理和关系了. 首先你必须知道C语言的基础数据类型在OC中不是所有地方都支持使用,那么碰到例如copy等不支持使用的情况,我们就必须用OC的基本数据类型了. 那么OC的基本数据类型是什么?其实它就是将C语言的数据类型全部打包封装到了一个类里面.这个类里面各种各样的C语言基础数据类型都有,例如int,float,double等 当然OC里NSNumber的功能相对要强大很多,它不仅仅包含了C的

Objective-C基础夯实篇——NSValue&NSNumber(装箱和拆箱)

概述 NSNumber和NSValue都是用来做装箱用的,把基本类型的数据装成对象.官方文档给的资料说明地很清楚: /* NSValue.h Copyright (c) 1994-2014, Apple Inc. All rights reserved. */ #import <Foundation/NSObject.h> @class NSString, NSDictionary; @interface NSValue : NSObject <NSCopying, NSSecureCo

OC中快速创建NSNumber NSDictionary NSArray的方法

NSNumber: @()     @小括号 或者        NSNumber * num = @3;    NSValue * value = @4; NSDictionary :@{} @大括号 NSArray :@[] @中括号

OC中的NSValue

1 NSvalue把复杂的数据类型(指针.结构体等)存储成对象 2 3 struct sct{ 4 int a; 5 int b; 6 }sctt={4,5}; 7 8 NSValue *value=[[NSValue alloc] initWithBytes:&sctt objCType:@encode(struct sct)]; 9 10 NSLog(@"%s",@encode(int));结果是i 11 NSLog(@"%s",@encode(floa

【OC学习-17】NSNumber和NSString介绍以及一些操作方法

(1)NSNumber数字对象:虽然有int和float这些基本数字变量,但终究不是对象,所以不能接受消息(就是被调用),所以需要数字对象 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //格式和NSString创建类似,只是后面的初始化函数要有针对性,这是框架里面内置的 NSNumber *intNumber=[[NSNumber alloc]ini

NSNumber和NSValue

在进行数据处理的时候,因为对象类型的不同, 并不能进行相应的数据处理,所以必须要进行数据类型的转换,这也就是NSNumber,NSValue这两类值对象出现的原因. 简而言之,NSNumber就是实现基本数据类型与对象类型的互相转换,而NSValue,则是实现结构体对象与对象类型的互相转换. NSNumber因为是实现基本数据类型与对象类型的互相转换,所以,必须是要有数据类型,而int ,char,BOOL,Float,Long,Integer等等等-都可以进行相应的转换 Foundation框

黑马程序员——Foundation框架常用类(NSNumber/NSValue)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 简介 引入:NSArray.NSSet.NSDictionary这些OC集合都只能存放OC对象,不能存放基本数据类型(int.char.double...).如果我们想将基本数据类型存到这些OC集合中,那么我们将基本数据类型(int.char.double...)包装成OC对象,那么就可以存到OC集合中.NSNumber可以将基本数据类型包装为OC对象. NSValue:用来存储一个C或者OC的