2019独角兽企业重金招聘Python工程师标准>>>

Objective-C入门教程10:数字类型(NSInteger,NSUInteger,NSNumber)

柳志超博客 » Program » Objective-C » Objective-C入门教程10:数字类型(NSInteger,NSUInteger,NSNumber)

posted in Objective-C on 2012/12/14 by liuzc

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

NSInteger、NSUInteger

当你不知道程序运行哪种处理器架构时,你最好使用NSInteger,因为在有可能int在32位系统中只是int类型,而在64位系统,int可能变是long型。除非不得不使用int/long型,否则推荐使用NSInteger。

从上面的定义可以看出NSInteger/NSUInteger是一种动态定义的类型,在不同的设备,不同的架构,有可能是int类型,有可能是long类型。

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

NSNumber

有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?
NSNumber可以将基本数据类型包装起来,形成一个对象,这样就可以给其发送消息,装入NSArray中等。

 NSInteger intVal = 123;NSNumber *numberVal = [NSNumber numberWithInteger:intVal];NSMutableArray* array = [NSMutableArray array];[array addObject:intVal];    //错误,intVal不是一个对象类型[array addObject:numberVal]; //正确

Cocoa提供了NSNumber类来包装(即以对象形式实现)基本数据类型。

+ (NSNumber*)numberWithChar: (char)value;+ (NSNumber*)numberWithInt: (int)value;+ (NSNumber*)numberWithDouble:(double)value;+ (NSNumber*)numberWithFloat: (float)value;+ (NSNumber*)numberWithBool: (BOOL) value;...

将基本类型数据封装到NSNumber中后,就可以通过下面的实例方法重新获取它:

- (char)charValue;- (int)intValue;- (float)floatValue;- (double)doubleValue;- (BOOL)boolValue;...

NSValue类

我们说像数组这样的Foundation集合只能存储对象,不能存储像int这样的基本数据类型.但是我们往往也会有这样的需求,例如需要将CGPoint或是CGRect这样的结构存储在集合中.一个NSValue对象是用来存储一个C或者Objective-C数据的简单容器。它可以保存任意类型的数据,比如int,float,char,当然也可以是指pointers, structures, and object ids。NSValue类的目标就是允许以上数据类型的数据结构能够被添加到集合里.这种结构转化为对象的方式,不就是java中的装箱(boxing)吗?不过在Objective-C中称为包装(wraping),相反的,从对象中解出基本类型,称为展开(unwraping),在java中叫拆箱(unboxing).

NSNumber 继承自NSObject,可使用compare、isEqual等消息。
NSNumber是NSValue的子类。NSValue可包装任意类型值。

前面我们也介绍了Objective-C中的一些特殊数据类型:Objective-C入门教程05:特殊数据类型
更多关于NSValue的信息可以查看官方文档:NSValue Class Reference
更多信息可以参考:Foundation Data Types Reference

转载于:https://my.oschina.net/gongxiao/blog/517629

NSInteger,NSUInteger,NSNumber相关推荐

  1. NSNumber各类型包装转换

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

  2. ios long转float_iOS 数据类型转换

    数据类型转换: 1)int-->NSNumber:numberWithInt NSNumber *numObj = [NSNumber numberWithInt: 2]; 2)NSNumber ...

  3. c语言is int number,C语言中NSInteger,NSNumber以及Int的区别

    NSInteger和NSNumber 首先:NSInteger,NSNumber并没有什么关系,更不要想当然的以为二者还有什么继承关系,甚至还有人问NSInteger是不是NSNumber的子类?答案 ...

  4. 图片碎片化mask动画

    图片碎片化mask动画 效果 源码 https://github.com/YouXianMing/Animations // // TransformFadeViewController.m // A ...

  5. NSInvocation的使用

    在 iOS中可以直接调用 某个对象的消息 方式有2种 一种是performSelector:withObject: 再一种就是NSInvocation 第一种方式比较简单,能完成简单的调用.但是对于& ...

  6. iOS 图片碎片化轮播

    在项目中,常常用到轮播图,我们常常会想到用UIScrollView来实现.但是还有很多较高大上的方法,效果也更加炫酷.比如下面将要说的碎片化轮播. 效果类似现实中广告牌的翻转效果,如图         ...

  7. IOS开发学习周报(一)

    IOS开发学习周报(一) 学习记录 概括 熟悉在Mac OS下的开发操作,熟悉系统操作.了解相关快捷键以及触摸板快捷操作以便提高后续开发效率. 学习Objective-C相关语法,实操完成螺旋矩阵的算 ...

  8. three20 阅读到的代码

    2019独角兽企业重金招聘Python工程师标准>>> //返回资源路径 NSString* TTPathForDocumentsResource(NSString* relativ ...

  9. [控件] TranformFadeView

    TranformFadeView 效果图: 源码地址: https://github.com/YouXianMing/UI-Component-Collection 注意: maskView是iOS8 ...

最新文章

  1. 技术图文:C#语言中的泛型 II
  2. 1月份制造业和非制造业PMI双双回升 企稳迹象初显
  3. matlab paticalcoff,关于DOA估计中加权前后向空间平滑算法的仿真问题
  4. java knn kd树_KNN算法之KD树(K-dimension Tree)实现 K近邻查询
  5. c语言程序一些常见的不足,C语言常见错误分析及解决方法
  6. Window10上使用Git与Github远程仓库互连
  7. wordpress 更新以及下载插件:wordpress 安装失败:无法创建目录
  8. 打造kubernetes 高可用集群(nginx+keepalived)
  9. VBA基础知识———常用语句
  10. 本机mysql无法进行碎片整理有什么用,试试mysql数据碎片整理吧解决astgo经常死机变慢的问题...
  11. 谷歌:光靠软件修复不能完全防御“幽灵”漏洞
  12. 在 visual studio 中添加 ILDASM 工具
  13. Pyrene-PEG-Biotin,芘丁酸聚乙二醇生物素,Biotin-PEG-Pyrene
  14. Python的学习心得和知识总结(十二)|Python图形用户接口编程(Graphical User Interface编程 一)
  15. 拯救者Y7000 2020新版Bios关闭开机自检
  16. 计算机组装考核记录表,电脑组装与维护考核方案.doc
  17. 启动计算机按住del不放,电脑开机需要按del进入系统怎么办
  18. win10点一个程序要很久才响应解决方法
  19. 使用QSS美化PyQt5界面,分享4套超赞皮肤和QSS专用编辑器!
  20. Redis之父Antirez谈副业与主业

热门文章

  1. React 入门手册
  2. 春节您“抢票”到手了吗,如果没,请进来看看!
  3. 我在SharePoint行业的从业经历(一)
  4. Codeigniter 4.0-dev 版源码学习笔记之四——详细路由过程
  5. Java多线程4:synchronized锁机制
  6. memcache的学习路线图
  7. 图表中各个参数的应用( AChartEngine XMultipleSeriesRenderer
  8. WPF基础到企业应用系列7——深入剖析依赖属性(三)
  9. 交叉报表crosstab隐藏列名显示_SAP软件 报表查询之 输出格式设置
  10. UBUNTU 用户及用户组管理 修改用户和主机名