Objective-C NSNumber方法

//这几天的内容大部分都是方法的,可能在看的时候感觉没有什么可学的,但是这些东西后续都会涉及到,最好还是能够敲一遍,这样在后面遇到的时候就不会感到陌生!

NSNumber 是一个类继承于NSValue 即一个基本数据类型的集合 包括char a signed or unsigned char, short int, int, long int, long long int, float, or double or as a BOOL        NSNumber类型有点类似id类型,对于任何类型的数字对象都能用它来声明,也就是用它来声明数字对象,通过声明,很难判断声明变量是什么数字类型,确定数字对象类型多是在初始化的时候才能确定。

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

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

3.有人说既然都有了NSInteger等这些基础类型了为什么还要有NSNumber?它们的功能当然是不同的。

NSInteger是基础类型,但是NSNumber是一个类。如果想要在NSMutableArray里存储一个数值,直接用NSInteger是不行的,比如在一个NSMutableArray里面这样用:

NSMutableArray *array = [[NSMutableArray alloc]init];

[array addObject:[NSNumber numberWithInt:88]];

这样是会引发编译错误的,因为NSMutableArray里面放的需要是一个类,但‘88’不是类。

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

例如以下创建方法:

+ (NSNumber *) numberWithChar: (char) value; //转化char

+ (NSNumber *) numberWithInt: (int) value; //转化int

+ (NSNumber *) numberWithFloat: (float) value; //转化float

+ (NSNumber *) numberWithBool: (BOOL) value; //转化BOOL

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

- (char) charValue;

- (int) intValue;

- (float) floatValue;

- (BOOL) boolValue;

- (NSString *) stringValue;

例子:

NSNumber *num = [NSNumber numberWithInt:88];

NSInteger integer = [num intValue];

NSString与NSInteger的相互转换

NSInteger integerNumber = 88;

NSString * string = [NSString stringWithFormat:@"%d",integerNumber];

NSLog(@"string is %@", string);

integer = [string intValue];

NSLog(@"integer is%d", integerNumber);

时间: 2025-01-04 17:57:46

Objective-C NSNumber方法的相关文章

NSArray NSMutableArray   NSNumber 方法

@font-face {  font-family: "宋体";}@font-face {  font-family: "宋体";}@font-face {  font-family: "@宋体";}@font-face {  font-family: "Cambria";}@font-face {  font-family: "Heiti SC Light";}@font-face {  font-fam

iOS开发总结(A0)- Class, variable, enum, method 命名规范及好的做法

参考effective objective 2.0 item 19 use clear and consistent naming 中的建议 1. method name : 适用驼峰命名法,方法名称应尽能表明方法是干什么的,不必担心名称过程,因为在使用时,xcode 会自动补全 - 如果method返回一个值,方法名称应表明这是什么值 - 不要用缩写 - 对于boolean property ,加上is 或者has 前缀 - 不要使用get 前缀 - 名称应易读,尽量像一个自然句子 2. cl

iOS的Mantle实战

公司项目之前的model层代码是我使用JSON工具直接生成Objective-C代码的,当时还是觉得相当省事的,毕竟我经历过无model层的NSDictionary“黑暗”时期.但是随着项目的推进,问题开始慢慢显现出来. 于是,在一个多月前,我在Objc.io上看到提及了Mantle,花了一点时间看了一下,决定先在分支上全套改用Mantle.使用了一段时间,性能没造成什么瓶颈,稳定性还是可以接受的.后来也基于Mantle.MK和RAC,把网络的请求整合在一起,在新项目上全面使用.一开始时也是没什

Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 delegate 方法使我们可以做到让 js 需要调用时,通知 native.在 native 执行完相应调用后,可以用stringByEvaluatingJavaScriptFromString 方法,将执行结果返回给 js.这样,就实现了 js 与 native 代码的相互调用.具体让 js 通知 na

【IOS 开发】Object - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

一. Object-C 对象简单处理 1. 包装类 (1) 包装类简介 NSValue 和 NSNumber : -- 通用包装类 NSValue : NSValue 包装单个 short, int, long, float, char, id, 指针 等数据; -- NSNumber 包装类 : 用于包装 C 语言数据类型; NSNumber 方法 : -- "+ numberWithXxx :" : 将特定类型的值包装成 NSNumber; -- "- initWithX

iOS中数据类型转换--遇到则记录

1.NSString转NSNumber 使用情景:CoreData存储数据,其中一个为价格,CoreData里面定义为float 用文本输入框得到的数据类型是NSString,将NSString转换成NSNumber方法: detail.price = [NSNumber numberWithFloat:[self.priceTF.text floatValue]]; 还有其他的转换函数,如1.字符串拼接 NSString *newString = [NSString stringWithFor

Objective-C学习_内存管理学习笔记

  内存泄漏 : 应当废弃的对象在超出生命周期后继续存在 内存管理 : 遵守配对原则,有alloc/new/copy/mutableCopy就要有相对应的release或autorelease 原因 : Oc对象是在堆里面的(动态分配),堆里面的内存由我们程序员来管理 : 对象操作 Objective –c 对应方法 生成并持有对象 alloc/new/copy/mutableCopy等 持有对象 retain 方法 释放对象 release方法 废弃对象 dealloc方法(系统自动调) 内存

iOS的Mantle实战分析

公司项目之前的model层代码是我使用JSON工具直接生成Objective-C代码的,当时还是觉得相当省事的,毕竟我经历过无model层的NSDictionary“黑暗”时期.但是随着项目的推进,问题开始慢慢显现出来. 于是,在一个多月前,我在Objc.io上看到提及了Mantle,花了一点时间看了一下,决定先在分支上全套改用Mantle.使用了一段时间,性能没造成什么瓶颈,稳定性还是可以接受的.后来也基于Mantle.MK和RAC,把网络的请求整合在一起,在新项目上全面使用.一开始时也是没什

Objective-C( Foundation框架 一 NSNumber(NSValue))

NSNumber: 是OC中处理数字的一个类 NSValue是NSNumber的子类 如何处理: 把int,float,double  包装成一个对象 使用NSNumber的好处: 可以把基本数据类型的数据,保存到数组或字典中 // 定义基本数据类型 int a = 10; float b = 2.2f; double d = 1.22; int x = 100; // int 包装成 NSNumber NSNumber *intObj = [NSNumber numberWithInt:a];