Objective-C Foundation框架实践——NSNumber(1)

Objective-C Foundation框架实践——NSNumber(一)

       框架是由许多类,方法,函数以及文档按照一定的规则组织起来的集合,以便于程序员更方便、迅速的开发程序。Cocoa程序编写主要用到两个框架Foundation和ApplicationKit(UIKit). 其中Foundation框架主要定义了一些基础类,供程序员使用,而ApplicationKit主要是一些用户界面设计的类,用于Mac开发使用此类。Foundation框架中的所有类都继承自NSObject。

       作为通用的面向对象的函数库,Foundation提供了字符串、数值的管理,容器以及枚举,以及一些其他的与图形用户界面没有直接关系的功能。

       在之前的学习中,我们已经学习了基本数据类型。但这些都是基本数据类型,他们并不是对象,因此,不能向他们发送消息。然而有时候也需要把他们当做对象来处理。比如,我们需要把基本类型放入集合中(在Cocoa中集合只能存放对象,无法存放基本数据类型),那么我们就需将基本数据类型转换为数字对象。OC中提供了数字对象“NSNumber”可以将基本数据类型“包装”成对象,这样我们就可以当基本数据类型来处理了。这里大家可以和java中的装箱拆箱进行比较学习。

       使用类方法进行数字对象的初始化:(使用类方法创建的对象不需要我们进行内存管理)

    //类方法创建对象;
    int num2 = 200;
    NSNumber *number2 = [NSNumber numberWithInt:num2];
    
    BOOL boo2 = true;
    NSNumber *bool2 = [NSNumber numberWithBool:boo2];
    
    char ch2 = 'a';
    NSNumber *character2 = [NSNumber numberWithChar:ch2];
    

       使用实例方法进行数字对象初始化:(使用实例方法创建的对象需要我们进行内存管理,ARC的话就不用了)

    //实例方法创建对象;
    int num = 100;
    NSNumber *number = [[NSNumber alloc] initWithInt:num];
    
    BOOL boo = true;
    NSNumber *booll = [[NSNumber alloc] initWithBool:boo];
    
    char ch = 'a';
    NSNumber *character = [[NSNumber alloc] initWithChar:ch];

 

        同样的,我们也可以把NSNumber对象转换为基本类型:

    //NSNumber对象转换为基本类型
    int nn = [number intValue];
    BOOL bb = [booll boolValue];
    char cc = [character charValue];
    

         现在我们来对NSNumber对象和基本数据类型来进行输出:

    //实例方法创建对象;
    int num = 100;
    NSNumber *number = [[NSNumber alloc] initWithInt:num];
    NSLog(@"num = %@",number);
    
    BOOL boo = true;
    NSNumber *booll = [[NSNumber alloc] initWithBool:boo];
    NSLog(@"boo = %@",booll);
    
    char ch = 'a';
    NSNumber *character = [[NSNumber alloc] initWithChar:ch];
    NSLog(@"character = %@",character);
    
    
    //NSNumber对象转换为基本类型
    int nn = [number intValue];
    NSLog(@"nn = %d",nn);
    
    BOOL bb = [booll boolValue];
    NSLog(@"bb = %hhd",bb);
    
    char cc = [character charValue];
    NSLog(@"cc = %c",cc);

输出结果如下:

Objective-C Foundation框架实践——NSNumber(1)

输出结果是完全对应的,注意‘a’的ASCII码值是97.当输出对象时,格式控制符使用的是“%@”。



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

版权声明:本文为博主原创文章,未经博主允许不得转载。