• iOS开发之int,NSInteger,NSUInteger,NSNumber的使用


    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 plaincopy在CODE上查看代码片派生到我的代码片
     
    1. + numberWithBool:  
    2. + numberWithChar:  
    3. + numberWithDouble:  
    4. + numberWithFloat:  
    5. + numberWithInt:  
    6. + numberWithInteger:  
    7. + numberWithLong:  
    8. + numberWithLongLong:  
    9. + numberWithShort:  
    10. + numberWithUnsignedChar:  
    11. + numberWithUnsignedInt:  
    12. + numberWithUnsignedInteger:  
    13. + numberWithUnsignedLong:  
    14. + numberWithUnsignedLongLong:  
    15. + numberWithUnsignedShort:  


    初始化方法:

    [objc] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1.  initWithBool:  
    2.  initWithChar:  
    3.  initWithDouble:  
    4.  initWithFloat:  
    5.  initWithInt:  
    6.  initWithInteger:  
    7.  initWithLong:  
    8.  initWithLongLong:  
    9.  initWithShort:  
    10.  initWithUnsignedChar:  
    11.  initWithUnsignedInt:  
    12.  initWithUnsignedInteger:  
    13.  initWithUnsignedLong:  
    14.  initWithUnsignedLongLong:  
    15.  initWithUnsignedShort:  

    检索

    [objc] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. – boolValue  
    2. – charValue  
    3. – decimalValue  
    4. – doubleValue  
    5. – floatValue  
    6. – intValue  
    7. – integerValue  
    8. – longLongValue  
    9. – longValue  
    10. – shortValue  
    11. – unsignedCharValue  
    12. – unsignedIntegerValue  
    13. – unsignedIntValue  
    14. – unsignedLongLongValue  
    15. – unsignedLongValue  
    16. – unsignedShortValue  

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

    数字对象的创建或者初始化:

    格式:

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

    [objc] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. intNumber = [NSNumber numberWithInt:100];  
    2. longNumber = [NSNumber numberWithLong:0xabcdef];  
    3. floatNumber = [NSNumber numberWithFloat:10.01];  


    2、int、 NSInteger、 NSUInteger、NSNumber之间的区别和联系

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

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

    1》、当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。

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

    3》、有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。

    NSInteger是基础类型,但是NSNumber是一个类。如果想要存储一个数值,直接用NSInteger是不行的,比如在一个Array里面这样用:

    NSArray *array= [[NSArray alloc]init];
    [array addObject:3];//会编译错误

    这样是会引发编译错误的,因为NSArray里面放的需要是一个类,但‘3’不是。这个时候需要用到NSNumber:

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

    一下两行代码是会有警告的  因为NSArray 是不可变的.

    NSArray *array1= [[NSArray alloc]init];

    [array1 addObject:[NSNumber numberWithInt:3]];

    Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。

    例如以下创建方法:

    + (NSNumber*)numberWithChar: (char)value;
    + (NSNumber*)numberWithInt: (int)value;
    + (NSNumber*)numberWithFloat: (float)value;
    + (NSNumber*)numberWithBool: (BOOL) value;

    将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:

    - (char)charValue;
    - (int)intValue;
    - (float)floatValue;
    - (BOOL)boolValue;
    - (NSString*)stringValue;

    参考:

    http://www.wuleilei.com/blog/335

    http://blog.csdn.net/weasleyqi/article/details/33396809

  • 相关阅读:
    遍历Map集合的方法
    简易循环手动增加表的数据
    初识Mysql,mysql的介绍和一些SQL语句
    SQL语句
    STS中applicationContext.xml配置文件
    STS中poem.xml配置文件
    MybatisMapper 动态映射(增删改查)
    MybatisMapper 映射框架(增删改查 原始模式)
    Spring 框架下 (增 删 改 )基本操作
    Spring 框架下 事务的配置(复杂)
  • 原文地址:https://www.cnblogs.com/langtianya/p/3918515.html
Copyright © 2020-2023  润新知