zoukankan      html  css  js  c++  java
  • 关于NSNumber的面试题。。。

    面试题:以下code 编译是否有误?

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

            [myArray addObject: 18 ];

    解答:

          这样是会引发编译错误的,因为NSMutableArray中所要存放的是一个对象,而‘18’是基本数据类型,这该怎么解决呢? 就需要用到 NSNumber。

         这样写就正确了:

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

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

          

    关于NSNumber与NSInteger的区别:

          NSNumber 是类;

          NSInteger是基本类型,那么使用起来就非常简单。 声明一个变量, NSInteger   oneInt;  直接赋值就可以了。 例如: oneInt=18;

          NSNumber 这个类型,从字面上看,它属于char、int、long、double 中的任意一种类型。 这就是“类”的强大 —— 抽象。既然NSNumber 是类,就应该遵循“类”的规则。 通过类方法来创建、初始化一个类的对象。 

         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;

     

    注意:

         Objective-C 支持的类型有两种:基本类型 和  类。

          基本类型,如同C 语言中的 int 类型一样,拿来就可以直接用。 而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值。 类的初始化,需用类自身的方法 (类方法)。 代码中所创建的对象,使用完后,必须释放。

  • 相关阅读:
    HDOJ 4747 Mex
    HDU 1203 I NEED A OFFER!
    HDU 2616 Kill the monster
    HDU 3496 Watch The Movie
    Codeforces 347A A. Difference Row
    Codeforces 347B B. Fixed Points
    Codeforces 372B B. Hungry Sequence
    HDU 1476 Sudoku Killer
    HDU 1987 How many ways
    HDU 2564 词组缩写
  • 原文地址:https://www.cnblogs.com/jinxin680/p/4910131.html
Copyright © 2011-2022 走看看