9

使用 Foundation Framework 中的NSNumber而不是基本的 C 类型(int、float、double)有什么好处?

使用 NSNumber:

NSNumber *intNumber;
NSInteger myInt;
intNumber = [NSNumber numberWithInteger: 100];
myInt = [intNumber integerValue];

使用纯 C:

int intNumber;
intNumber = 100;

使用 C 似乎更容易和经济。

我知道 NSNumber 是一个对象(或类?)类型,但我为什么要使用它们而不是简单的 C 变量呢?我应该什么时候使用它们?

4

3 回答 3

18

的目的NSNumber只是在对象(指针类型)中装箱原始类型,因此您可以在需要指针类型值才能工作的情况下使用它们。

一个常见的例子:NSNumber如果你想在 Core Data 实体中持久化数值,你必须使用。

您可以并且应该使用原语进行计算(除非使用小数,在这种情况下您使用NSDecimalor NSDecimalNumber)。

于 2011-02-18T20:43:01.537 回答
3

如果您需要将数字作为对象传递,请使用NSNumber.

如果需要进行算术运算,可以使用intand double。如果您不想为 32/64 位问题而烦恼,您可以使用NSIntegerand CGFloat.

于 2011-02-18T20:56:27.280 回答
0

因为在处理某些对象的参数传递时,使用基本数据类型是行不通的。此外,NSNumber 类为您提供了将值快速转换为其他数据类型的选项。

于 2011-02-18T20:43:55.923 回答