NSNumber与NSInteger的区别
Objective-C 支持的类型有两种:基本类型 和 类。
基本类型,如同C 语言中的 int 类型一样,拿来就可以直接用。 而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值。 类的初始化,需用类自身的方法 (类方法)。 代码中所创建的对象,不用后,还得记着释放。
做了这么多铺垫, 具体到 NSNumber 和 NSInteger ,又怎样呢?
NSNumber 是类, 而 NSInteger 只不过是个 基本类型。
既然 NSInteger是基本类型,那么,使用起来就非常简单。 声明一个变量, NSInteger myInt; 直接赋值就可以了。 比如: myInt=8;
谈到“类”,总是给人以抽象的感觉。像NSNumber 这个类型,从字面上看,它属于char、int、long、double 中的哪一种呢? 其实,NSNumber 可以隶属其中的任意一种类型。 这就是“类”的强大 —— 抽象,而且内嵌多种方法(method)。
既然NSNumber 是类,就应该遵循“类”的规则。 通过类方法来创建、初始化一个类的对象。
NSNumber 所拥有的类方法,如下:
+ (NSNumber*)numberWithChar: (char)value;
+ (NSNumber*)numberWithInt: (int)value;
+ (NSNumber*)numberWithFloat: (float)value;
+ (NSNumber*)numberWithBool: (BOOL) value;
NSNumber *myNumber,*floatnumber,*intNumber,*doublenumber,*charNumber;
myNumber = [NSNumber numberWithLong:0xabcdef];
floatnumber = [NSNumber numberWithFloat:12.33];
intNumber = [NSNumber numberWithInt:100];
doublenumber = [NSNumber numberWithDouble:12345e+15];
charNumber = [NSNumber numberWithChar:'X'];
将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:
- (char)charValue;
- (int)intValue;
- (float)floatValue;
- (BOOL)boolValue;
- (NSString*)stringValue;
myInt = [intNumber intValue]; //获取对象的整型值
//[floatnumber floatValue];
//[doublenumber doubleValue];
//[charNumber charValue];
有了以上概念,我们来考一个面试题。 以下code 编译是否有误?
NSMutableArray *myArray =[[NSMutableArrayalloc]init];
[myArray addObject:6];
这样是会引发编译错误的,因为NSMutableArray中所要存放的是一个对象,但‘6’不是。这怎么办呢? 需要用到 NSNumber。
NSMutableArray *myArray =[[NSMutableArrayalloc]init];
[myArray addObject:[NSNumbernumberWithInt:6]];
NSLog(@"array content is %@", myArray);
NSNumber与NSInteger的区别的更多相关文章
- NSNumber与NSInteger的区别 -bei
基本类型,如同C 语言中的 int 类型一样,拿来就可以直接用. 而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值. 类的初始化,需用类自身的方法 (类方法). 代码中所创建的对 ...
- 包装CGFloat和用NSNumber初始化的区别?
@(CGFloat)和[NSNumber numberWith:CGFloat]的区别?
- NSNumber(把数字存进数组字典等的问题)
官方文档地址https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNum ...
- Objective-C ,ios,iphone开发基础:几个常用类-NSNumber
2013-08-21 在Objective-C,包括int double float 等等再内的基础数据类型都不是一个类,所以就不能给它们发送消息,也就是说不能调用方法,那怎么办呢 ?Objectiv ...
- 数值类对象:NSNumber,NSValue,NSNull
基本,集合,复杂,对象 可用对象封装基本数值,然后将对象放入NSArray或NSDictionary 中. 用对象封装基本数值后,即可给其发送消息. 数值类型包括:NSNumber,NSValue,N ...
- 数字对象NSNumber的使用
先简述下关于NSNumber的信息 NSNumber的存在就相当于java中的装箱与拆箱.只不过java中的装箱拆箱过程,使用的是对应的类型,比如基本数据类型是int.double类型,装箱时就得对应 ...
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- iOS开发系列—Objective-C之Foundation框架
概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...
- iOS-几大框架的介绍
1.Objective-C之Foundation框架 概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objectiv ...
随机推荐
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] 分类 ...
- objective-C Ⅱ
objective-C Ⅱ 接第一讲 objective-c初识 一.oc中的数组:NSArray 定义: NSArray *arrayName=[NSArray arrayWithObje ...
- InnoDB引擎Myslq数据库数据恢复
首先祝愿看到这片文章的你永远不要有机会用到它... 本文指针对用InnoDB引擎的Mysql数据库的数据恢复,如果是其它引擎的Mysql或其它数据库请自行google... 如果有一天你手挫不小心删掉 ...
- paip. everything exe 文件不能启动的解决
paip. everything exe 文件不能启动的解决 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blo ...
- .Net MVC 入门之Razor语法
Razor语法 Razor是以后MVC项目中都需要用的, 所以在学MVC的基础的时候,我们的目标:要了解熟悉Razor页面的语法结构,做到灵活使用,so我们马上开始学习Razor,也请你们多评论和推荐 ...
- js调试若干
主要是将 chrome调试工具 firebug的控制台对以下都有支持 consoleAPI https://developers.google.com/chrome-developer-tools ...
- !!!易控INSPEC组态软件开发小结——-一次工程文件损坏和处理经过
从加入红橡开始熟悉和使用易控(INSPEC)组态软件,值得赞扬的是INSPEC的开放性和对C#语言的支持,除此之外,便也没有感觉它与其他组态软件有太多优势,有人说INSPEC软件授权比国内其他同类的组 ...
- POJ 3461 Oulipo(模式串在主串中出现的次数)
题目链接:http://poj.org/problem?id=3461 题意:给你两个字符串word和text,求出word在text中出现的次数 思路:kmp算法的简单应用,遍历一遍text字符串即 ...
- BZOJ 2662: [BeiJing wc2012]冻结(最短路)
这道题和 BZOJ 2763飞行路线 几乎一模一样..然后飞行路线我是1A,这道题WA了4次,我开始怀疑我的智商了.. ---------------------------------------- ...
- centos6.5 升级python 到 python 2.7.11 安装 pip
1.首先官方下载源码,然后安装(./configure,make all,make install,make clean,make distclean) 注意:需要先安装zlib-devel,open ...