Objective-c学习笔记08-NSNumber

来源:互联网 发布:linux kernel map 编辑:程序博客网 时间:2024/06/05 19:35
Objective-C可以开发apple家族系列产品的软件,这里记录成笔记方便日后复习:
  • Objective-c学习笔记01——简介
  • Objective-c学习笔记02——类(面向对象)
  • Objective-c学习笔记03——内存管理
  • Objective-c学习笔记04——NSString
  • Objective-c学习笔记05——NSArray(NSMutableArray)
  • Objective-c学习笔记06——字典与集合
  • Objective-c学习笔记07——异常处理(try catch)
  • Objective-c学习笔记08——NSNumber

我们都知道Objective-c常常用到消息机制,而 int型、float型、long型都是Objective-c中的基本数据类型,是无法接收到消息的,所以在这个时候就引入了NSNumber这个类,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象

一、NSNumber基本使用

  1. //声明对象与变量
  2. NSNumber *myNumber, *floatNumber, *intNumber;
  3. NSInteger myInt;
  4.  
  5. //integer 型
  6. intNumber = [NSNumber numberWithInteger:100];
  7. int i = intNumber.intValue;
  8. NSLog(@"numberWithInteger:%i", i);
  9.  
  10. // long型
  11. myNumber = [NSNumber numberWithLong:0xabcdef];
  12. NSLog(@"numberWithLong:%li", myNumber.longValue);
  13.  
  14. // char 型
  15. myNumber = [NSNumber numberWithChar:'A'];
  16. NSLog(@"numberWithChar:%d", myNumber.charValue);
  17.  
  18. // float 型
  19. myNumber = [NSNumber numberWithFloat:0.333];
  20. NSLog(@"numberWithFloat:%f", myNumber.floatValue);
  21.  
  22. // double 型
  23. myNumber = [NSNumber numberWithDouble:23.84888];
  24. NSLog(@"numberWithDouble:%f", myNumber.doubleValue);

注:上面从NSNumber对象中获取值必须要和存储到NSNumber对象里面的数值类型一致.
NSLog输出:

2013-09-03 11:02:14.488 Objective-c--NSNumber[10507:303] numberWithInteger:1002013-09-03 11:02:14.491 Objective-c--NSNumber[10507:303] numberWithLong:112593752013-09-03 11:02:14.492 Objective-c--NSNumber[10507:303] numberWithChar:652013-09-03 11:02:14.493 Objective-c--NSNumber[10507:303] numberWithFloat:0.3330002013-09-03 11:02:14.493 Objective-c--NSNumber[10507:303] numberWithDouble:23.848880Program ended with exit code: 0

当然,现在Objective-c已经引入了ARC自动引用计数,可以方便的自动处理内存,所以我们也可以方便的使用初始化实例方法:

intWithChar:intWithShort:intWithInt:intWithLongintWithFloat:......

二、NSNumber常用方法

  1. NSNumber *number1 = [NSNumber numberWithFloat:3.14];
  2. NSNumber *number2 = [NSNumber numberWithInt:10];
  3.  
  4. //比较两个数是否相等
  5. if ([number1 isEqualToNumber:number2]) {
  6. NSLog(@"number1 equal number2");
  7. }else {
  8. NSLog(@"numbers are not equal");
  9. }
  10.  
  11. // 验证一个Number是否小于、等于或大于另一个Number
  12. if ([number1 compare:number2] == NSOrderedAscending) {
  13. NSLog(@"First number is less than second");
  14. }

isEqualToNumber:比较两个NSNumber对象的数值,程序会返回BOOL值查看这两个值是否相等.
compure: 测试一个值是否在数值上小于、等于或者大于另外一个值,当number1小于number2的时候返回NSOrderedAscending,但两个值相等这返回NSOrderdSame,如果number2大于number1则返回NSOrderedDescending。

2013-11-03 11:24:43.058 Objective-c--NSNumber[10617:303] numbers are not equal2013-11-03 11:24:43.059 Objective-c--NSNumber[10617:303] First number is less than secondProgram ended with exit code: 0

下面列举除了Api文档中对NSNumber的创建等方法,也可以查看一下NSDecimalNumber类的相关文档,它是NSNumber的子类,在对象层面上提供了一些数值的四则运算.

创建NSNumber对象+ numberWithBool:+ numberWithChar:+ numberWithDouble:+ numberWithFloat:+ numberWithInt:+ numberWithInteger:+ numberWithLong:+ numberWithLongLong:+ numberWithShort:+ numberWithUnsignedChar:+ numberWithUnsignedInt:+ numberWithUnsignedInteger:+ numberWithUnsignedLong:+ numberWithUnsignedLongLong:+ numberWithUnsignedShort:初始化NSNumber对象– initWithBool:– initWithChar:– initWithDouble:– initWithFloat:– initWithInt:– initWithInteger:– initWithLong:– initWithLongLong:– initWithShort:– initWithUnsignedChar:– initWithUnsignedInt:– initWithUnsignedInteger:– initWithUnsignedLong:– initWithUnsignedLongLong:– initWithUnsignedShort:访问数字值– boolValue– charValue– decimalValue– doubleValue– floatValue– intValue– integerValue– longLongValue– longValue– shortValue– unsignedCharValue– unsignedIntegerValue– unsignedIntValue– unsignedLongLongValue– unsignedLongValue– unsignedShortValue检索字符串表示形式– descriptionWithLocale:– stringValue比较NSNumber对象– compare:– isEqualToNumber:访问类型信息– objCType
声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: Objective-c学习笔记08-NSNumber
此条目发表在objective-c分类目录,贴了NSNumber, objective-c标签。将固定链接加入收藏夹。
原创粉丝点击