2012-02-10 88 views
1

我只是想弄清楚這些值本身是int,unsigned int,NSInteger。我以爲我看到有人說他們是未簽名的整數,但在蘋果的頭文件中我看到他們用來存儲負值。什麼是Objective-C的枚舉類型

回答

6

枚舉是C(和C++)的一個特性,而不是Objective-C。當你聲明一個枚舉時,你聲明一個新的C數據類型。

給定枚舉數據類型的大小可能是int的大小,或者它可能只是足夠大以容納每個聲明的枚舉值。它是編譯器特有的,並且通常有編譯器設置來控制如何處理枚舉。

枚舉最大的可能是int,所以你總是可以將任何枚舉值轉換爲int。相反是不正確的。您無法將任何int轉換爲枚舉值。

+0

這比這更微妙一點。枚舉類型本身是編譯器依賴的整型,可能小於「int」。但枚舉*值實際上只是整型常量。 – 2012-02-10 21:13:25

0

這是一個枚舉類型。您可以定義自己的類型,可以採用某些指定的值。

看到這個問題: What is a typedef enum in Objective-C?

所以,如果你有一個枚舉,如:

typedef enum {  
    NBType1, 
    NBType2, 
    NBType2, 
} NBType 

傳遞給方法的參數是NBType類型。

+0

但枚舉可以有多大的值範圍。另外,如果某個方法正在從枚舉中傳遞一個值,但不知道該值,那麼該參數的類型是什麼。 – Brian 2012-02-10 18:40:27

+0

這將是你定義枚舉的類型。 – barfoon 2012-02-10 18:43:16

1

枚舉整數是最大的32位signed int s。