Objective-C Foundation框架实践——NSNumber(1)
框架是由许多类,方法,函数以及文档按照一定的规则组织起来的集合,以便于程序员更方便、迅速的开发程序。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);
输出结果如下:
。
输出结果是完全对应的,注意‘a’的ASCII码值是97.当输出对象时,格式控制符使用的是“%@”。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
版权声明:本文为博主原创文章,未经博主允许不得转载。