2011-11-16 17 views
2

我已經通話清單我可以做的定義爲枚舉Objective-C的枚舉最大(位)的限制(iphone)

typedef enum 
{ 
    ServiceCallGetDataA = 1 << 1; 
    ServiceCallGetDataB = 1 << 2; 
    ServiceCallGetDataC = 1 << 3; 
    ServiceCallGetDataD = 1 << 4; 
    .. 
} ServiceCall; 

一個Web服務這樣做是按位,所以如果我打電話給我的服務經理我只能說

[ServiceManager getDataFor:(ServiceCallGetDataB | ServiceCallGetDataC)]; 

,然後給了我爲B & C服務兩個數據。這一切都很完美。

但我只能定義32個枚舉,因爲我開發的iOS平臺是32位。

主要目標是保持OR操作完好無損,以便使用OR操作來獲取/設置枚舉。

有什麼想法?

回答

1

您也可以嘗試使用位向量而不是普通的枚舉。正如我發佈this question時所建議的那樣,您可以使用CFMutableBitVector來實現任意大小的位向量。

0

如果你需要更大的整數,你可以使用類型long long,甚至在iOS上應該翻譯成64位整數。

或者,您可以使用NSSet變量與每個服務的常量字符串。然後你可以將它們組合起來,檢查對象是否包含等。如果速度很關鍵,這可能不是選擇,但如果這些功能不被太頻繁地使用,那麼這樣就會有更大的靈活性。