您的位置:首页 > 产品设计 > UI/UE

【iOS知识学习】_int、NSInteger、NSUInteger、NSNumber的区别和联系

2017-01-09 10:41 1006 查看
1、首先先了解下NSNumber类型:

苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html

NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short int, int, long int, long long int, float, or double or as a BOOL,它提供了一个compare:方法来决定两个NSNumber对象的排序;

创建一个NSNumber对象有以下方法:

[objc]
view plain
copy





+ numberWithBool:  
+ numberWithChar:  
+ numberWithDouble:  
+ numberWithFloat:  
+ numberWithInt:  
+ numberWithInteger:  
+ numberWithLong:  
+ numberWithLongLong:  
+ numberWithShort:  
+ numberWithUnsignedChar:  
+ numberWithUnsignedInt:  
+ numberWithUnsignedInteger:  
+ numberWithUnsignedLong:  
+ numberWithUnsignedLongLong:  
+ numberWithUnsignedShort:  



初始化方法:

[objc]
view plain
copy





– initWithBool:  
– initWithChar:  
– initWithDouble:  
– initWithFloat:  
– initWithInt:  
– initWithInteger:  
– initWithLong:  
– initWithLongLong:  
– initWithShort:  
– initWithUnsignedChar:  
– initWithUnsignedInt:  
– initWithUnsignedInteger:  
– initWithUnsignedLong:  
– initWithUnsignedLongLong:  
– initWithUnsignedShort:  

检索

[objc]
view plain
copy





– boolValue  
– charValue  
– decimalValue  
– doubleValue  
– floatValue  
– intValue  
– integerValue  
– longLongValue  
– longValue  
– shortValue  
– unsignedCharValue  
– unsignedIntegerValue  
– unsignedIntValue  
– unsignedLongLongValue  
– unsignedLongValue  
– unsignedShortValue  

NSNumber类型有点类似id类型,对于任何类型的数字对象都能用它来声明,也就是用它来声明数字对象,通过声明,很难判断声明变量是什么数字类型,确定数字对象类型多是在初始化的时候才能确定。
数字对象的创建或者初始化:

格式:

NSNumber 数字对象 = [NSNumber numberWith数字类型:数值];

[objc]
view plain
copy





intNumber = [NSNumber numberWithInt:100];  
longNumber = [NSNumber numberWithLong:0xabcdef];  
floatNumber = [NSNumber numberWithFloat:10.01];  

2、int、 NSInteger、 NSUInteger、NSNumber之间的区别和联系
int : 当使用int类型定义变量的时候,可以像写C程序一样,用int也可以用NSInteger,推荐使用NSInteger ,因为这样就不用考虑设备是32位还是64位了。

NSUInteger是无符号的,即没有负数,NSInteger是有符号的。

NSInteger是基础类型,NSNumber是一个类,如果需要存储一个数值,直接使用NSInteger是不行的,比如在一个数组里使用下面的语句就会报错:

[objc]
view plain
copy





NSArray *array = [NSArray alloc] init];  
[array addObject:3];  

因为array里应该是一个类,但‘3’不是,所以需要用NSNumber:

[objc]
view plain
copy





NSArray *array = [NSArray alloc] init];  
[array addObject:[NSNumber numberWithInt:3]];  

写的比较简单,希望有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  NSNumber NSUInteger ios