2011-02-18 65 views
9

使用NSNumber從基礎框架而不是基本的C類型(int,float,double)有什麼好處?我應該使用NSNumber而不是基本的C號碼類型嗎?

使用的NSNumber:

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

使用純C:(?或類)

int intNumber; 
intNumber = 100; 

似乎是一個極大的方便,經濟使用C.

我知道的NSNumber是一個對象類型,但爲什麼我會用它們來代替簡單的C變量?我應該什麼時候使用它們?

回答

17

NSNumber的目的很簡單,就是在對象(指針類型)中設置原始類型,所以你可以在需要指針類型值的情況下使用它們。

一個常見示例:如果要在Core Data實體中保留數值,則必須使用NSNumber

您可以也應該使用原語進行計算(除非使用小數,在這種情況下您使用的是NSDecimalNSDecimalNumber)。

+6

+1此外,Foundation的集合類只接受對象,而不是基元。 – 2011-02-18 20:58:36

0

因爲在處理傳遞某些對象的參數時,使用基本數據類型將不起作用。另外,NSNumber類爲您提供了將值快速轉換爲其他數據類型的選項。

2

如果您需要傳遞一個數字作爲對象,請使用NSNumber

如果您需要進行算術運算,您可以使用intdouble。如果您不想打擾32/64位問題,則可以使用NSIntegerCGFloat

相關問題