zoukankan      html  css  js  c++  java
  • NSNumber与NSInteger的区别 -bei

    基本类型,如同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 = [[NSMutableArray alloc] init ];

    [myArray addObject: 6 ];

    这样是会引发编译错误的,因为NSMutableArray中所要存放的是一个对象,但‘6’不是。这怎么办呢? 需要用到 NSNumber。

    NSMutableArray  *myArray = [[NSMutableArray alloc] init ];

    [myArray addObject: [NSNumber numberWithInt:6] ];

    NSLog(@"array content is %@", myArray); 

  • 相关阅读:
    随笔为什么还要想标题
    [GXYCTF2019]BabySQli
    [CISCN2019 华北赛区 Day2 Web1]Hack World
    20年美亚杯个人赛-ALICE_USB部分WRITE UP
    20年美亚杯个人赛-Alice LG Phone部分WRITE UP
    20年美亚杯个人赛-Alice_Laptop部分WRITE UP
    20年美亚杯WRITE UP
    18年美亚杯团体赛-C部分 WRITE UP
    v&n赛 ML 第一步(python解决)
    CTFHub web技能树 RCE
  • 原文地址:https://www.cnblogs.com/isItOk/p/5267642.html
Copyright © 2011-2022 走看看