我应该使用NSNumber而不是基本C号类型吗?

Fáb*_*rez 9 c objective-c foundation

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

使用NSNumber:

NSNumber *intNumber;
NSInteger myInt;
intNumber = [NSNumber numberWithInteger: 100];
myInt = [intNumber integerValue];
Run Code Online (Sandbox Code Playgroud)

使用纯C:

int intNumber;
intNumber = 100;
Run Code Online (Sandbox Code Playgroud)

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

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

Bol*_*ock 18

其目的NSNumber仅仅是在对象(指针类型)中包含原始类型,因此您可以在需要指针类型值的情况下使用它们.

一个常见示例:NSNumber如果要在Core Data实体中保留数值,则必须使用.

您可以而且应该使用基元进行计算(除非使用小数,在这种情况下您使用NSDecimalNSDecimalNumber).

  • +1此外,Foundation的集合类只接受对象,而不是基元. (6认同)