1、首先先了解下NSNumber类型:

苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html

NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short int, int, long int, long long int, float, or double or as a BOOL,它提供了一个compare:方法来决定两个NSNumber对象的排序;

创建一个NSNumber对象有以下方法:

  1. + numberWithBool:
  2. + numberWithChar:
  3. + numberWithDouble:
  4. + numberWithFloat:
  5. + numberWithInt:
  6. + numberWithInteger:
  7. + numberWithLong:
  8. + numberWithLongLong:
  9. + numberWithShort:
  10. + numberWithUnsignedChar:
  11. + numberWithUnsignedInt:
  12. + numberWithUnsignedInteger:
  13. + numberWithUnsignedLong:
  14. + numberWithUnsignedLongLong:
  15. + numberWithUnsignedShort:

初始化方法:

  1. – initWithBool:
  2. – initWithChar:
  3. – initWithDouble:
  4. – initWithFloat:
  5. – initWithInt:
  6. – initWithInteger:
  7. – initWithLong:
  8. – initWithLongLong:
  9. – initWithShort:
  10. – initWithUnsignedChar:
  11. – initWithUnsignedInt:
  12. – initWithUnsignedInteger:
  13. – initWithUnsignedLong:
  14. – initWithUnsignedLongLong:
  15. – initWithUnsignedShort:

检索

  1. – boolValue
  2. – charValue
  3. – decimalValue
  4. – doubleValue
  5. – floatValue
  6. – intValue
  7. – integerValue
  8. – longLongValue
  9. – longValue
  10. – shortValue
  11. – unsignedCharValue
  12. – unsignedIntegerValue
  13. – unsignedIntValue
  14. – unsignedLongLongValue
  15. – unsignedLongValue
  16. – unsignedShortValue

NSNumber类型有点类似id类型,对于任何类型的数字对象都能用它来声明,也就是用它来声明数字对象,通过声明,很难判断声明变量是什么数字类型,确定数字对象类型多是在初始化的时候才能确定。

数字对象的创建或者初始化:

格式:

NSNumber 数字对象 = [NSNumber numberWith数字类型:数值];

  1. intNumber = [NSNumber numberWithInt:100];
  2. longNumber = [NSNumber numberWithLong:0xabcdef];
  3. floatNumber = [NSNumber numberWithFloat:10.01];

2、int、 NSInteger、 NSUInteger、NSNumber之间的区别和联系

int : 当使用int类型定义变量的时候,可以像写C程序一样,用int也可以用NSInteger,推荐使用NSInteger ,因为这样就不用考虑设备是32位还是64位了。

NSUInteger是无符号的,即没有负数,NSInteger是有符号的。

NSInteger是基础类型,NSNumber是一个类,如果需要存储一个数值,直接使用NSInteger是不行的,比如在一个数组里使用下面的语句就会报错:

  1. NSArray *array = [NSArray alloc] init];
  2. [array addObject:3];

因为array里应该是一个类,但‘3’不是,所以需要用NSNumber:

  1. NSArray *array = [NSArray alloc] init];
  2. [array addObject:[NSNumber numberWithInt:3]];

写的比较简单,希望有帮助

_int、NSInteger、NSUInteger、NSNumber的区别和联系的更多相关文章

  1. int, NSInteger, NSUInteger, NSNumber的区别

    新手在接触iOS或者Mac开发的时候,看到int和NSInteger,一般不清楚应该用哪个比较合适.我们先来查看下NSInteger的定义 #if __LP64__ || (TARGET_OS_EMB ...

  2. object-c中的int NSInteger NSUInteger NSNumber辨析

    object-c中的int NSInteger NSUInteger NSNumber辨析 #import <Foundation/Foundation.h> int main(int a ...

  3. 数字类型(NSInteger,NSUInteger,NSNumber)

    在Objective-C中,我们可以使用c中的数字数据类型,int.float.long等.它们都是基本数据类型,而不是对象.也就是说,不能够向它们发送消息.然后,有些时候需要将这些值作为对象使用. ...

  4. iOS开发之int,NSInteger,NSUInteger,NSNumber的使用

    1.首先先了解下NSNumber类型: 苹果官方文档地址:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/F ...

  5. ios开发 int,NSInteger,NSUInteger,NSNumber

    分享一下,在工作工程中遇到的一些不留心的地方: 1.当需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备 ...

  6. 85、int 、NSInteger、NSUInteger、NSNumber的区别和联系

    NSNumber是NSValue的一个子类,它是一个对象来存储数字值包括bool型,它提供了一系列的方法来存储char a signed or unsigned char, short int, in ...

  7. IOS基础之 (九) Foundation框架

    一NSNumber 类型转换 NSNumber 把基本数据类型包装成一个对象类型.NSNumber之所以可以(只能)包装基本数据类型,是因为继承了NSValue. @20 等价于 [NSNumber ...

  8. Objective-C中的基本数据类型

    // // main.m // 01.基本数据类型 // // Created by zhangqs008 on 14-2-13. // Copyright (c) 2014年 zhangqs008. ...

  9. IOS Number 处理(int-->NSNumber,NSNumber-->nsinteger,string -->double,CGFloat --> dobule)

    1 小结: 1)int-->NSNumber:numberWithInt 2)NSNumber-->nsinteger:integerValue 3)string -->double ...

随机推荐

  1. Java发送post请求

    package com.baoxiu.test; import java.io.BufferedReader;import java.io.InputStreamReader;import java. ...

  2. web页面浮动回到顶部功能和浮动广告

    实现测试浮动回到顶部 法一:用js实现<%@ Page Language="C#" AutoEventWireup="true" CodeBehind=& ...

  3. Linux系统下如何配置SSH?如何开启SSH?

    SSH作为Linux远程连接重要的方式,如何配置安装linux系统的SSH服务,如何开启SSH?下面来看看吧(本例为centos系统演示如何开启SSH服务). 查询\安装SSH服务 1.登陆linux ...

  4. POJ 3252 Round Numbers(数位dp)

    题意:给定区间[l,r],l < r ,求区间中满足条件的正整数的个数:二进制表示下0的个数不少于1的个数. 分析:f(x)表示<=x时满足条件的数的个数,所求问题即为f(r)-f(l-1 ...

  5. java:I/O 往原文件追加内容

    原来txt内容: "我要添加内容" import java.io.*; class Test { public static void main(String[] args) { ...

  6. PLS-00215:字符串长度限制在范围

    在Oracle中有一张people表 创建跟新表的存储过程 修改定义字段长度 总结:在Oracle中执行存储过程时,输出参数的长度要与原表中字段长度一致!

  7. memcache简易教程

    1.  memcache是什么 memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负担.它通过在内存中缓存数据和对象,来减少读取数据库的次数.从而提高动态.数据库驱 ...

  8. RTL 与 technology schematic的区别,包含概念与实例

    2013-06-25 16:40:45 下面是xilinx官网上的问答贴: http://china.xilinx.com/support/answers/41500.htm#solution The ...

  9. UVALive 3211 Now or later(2-SAT,二分,Kosaraju)

    题意: 有n个飞机要降落,每机都可以在两个时间点上选择降落.但是两机的降落时间间隔太小会影响安全性,所以,要求两机的降落时间应该达到最大,当然也不能冲突了.问最大的时间间隔是多少?(其实问的是max( ...

  10. C#实现无物理边距真正可打印区域的绘图\打印程序开发

    经常在开发实际的应用程序中,需要用到图形绘制和打印程序.如何实现完整的精确打印和绘图是需要注意许多细节地方的.最近在遇到打印问题的时候,仔细研究一阵,总结这篇博文,写得有点杂乱,看文要还请费点神. 基 ...