使用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变量?我什么时候应该使用它们?
答案 0 :(得分:18)
NSNumber
的目的只是在对象(指针类型)中包含原始类型,因此您可以在需要指针类型值的情况下使用它们。
一个常见示例:如果要在核心数据实体中保留数值,则必须使用NSNumber
。
您可以而且应该使用基元进行计算(除非使用小数,在这种情况下,您使用NSDecimal
或NSDecimalNumber
)。
答案 1 :(得分:3)
如果您需要将数字作为对象传递,请使用NSNumber
。
如果您需要进行算术运算,可以使用int
和double
。如果您不想打扰32/64位问题,可以使用NSInteger
和CGFloat
。
答案 2 :(得分:0)
因为处理某些对象的参数传递,使用基本数据类型将不起作用。此外,NSNumber类为您提供了将值快速转换为其他数据类型的选项。