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

int、long、NSInterger、NSUInterger、NSNumber 区别和使用

2016-12-06 10:26 281 查看

1、int、long、NSInterger 使用哪个?

1)c语言中,int和long的字节数是和操作系统指针所占位数相等。

2)但long的长度永远大于或等于int。

3)objective-c里,苹果的官方文档中总是推荐用NSInteger

它和int的区别在于:

在苹果的api实现中,NSInteger是一个封装,r会根据系统的位数(32or64)自动选择int的最大数值(int or long)。

4)NSInteger定义的代码类似于下:

 

#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;
typedef unsigned long NSUInteger;
#else

typedef int NSInteger;
typedef unsigned int NSUInteger;

#endif

2、NSInterger, NSUInterger 使用哪个?

NSUInteger是无符号的整型, NSInteger是有符号的整型,

1)表视图、索引中使用NSUInteger

在表视图应用中常见 NSUInteger row= [indexPath row];因为这是显示tableViewCell有多少个,只能是非零整数的,也就是说,NSUInteger常用于索引值;

2)其他地方使用 NSInterger

3、NSNumber 和 NSInteger

1)NSInteger是基础类型,NSNumber是一个类。

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对象的排序;

2)NSNumber的创建或者初始化:
NSNumber 数字对象 = [NSNumber numberWith数字类型:数值];
示例:

intNumber = [NSNumber numberWithInt:100];

longNumber = [NSNumber numberWithLong:0xabcdef];

floatNumber = [NSNumber numberWithFloat:10.01];

3)NSInteger 和 NSNumber 的转换

两者的关系可以看文档

转换的话参考两个函数

+ (NSNumber *)numberWithInteger:(NSInteger)value;

- (NSInteger)integerValue;

4)、NSArray 和 NSSet中可以存放 NSNumber ,不能存放 NSNumber。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: