2011-09-12 34 views
0

在Objective C中,當你定義一個枚舉時,所有的枚舉值在任何地方都是可見的,並阻塞全局名稱空間。如何限制目標C中的枚舉值的可見性?

我想使它成爲Java風格並強制只能通過枚舉類型名稱訪問枚舉,例如,與

typedef enum 
{ 
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY, NUM_OF 
} Day; 

我想確保 簡單地調用MONDAY產生編譯錯誤或至少警告,並訪問枚舉值的唯一途徑是像Day.MONDAYDay::MONDAY[Day MONDAY]或...

在Java中,我使用Enums或Interfaces,但在Objective-C中可行嗎?

如果沒有,那麼我必須命名如下所有枚舉:DAY_MONDAY, DAY_TUESDAY...,以使它們更易於在自動完成彈出窗口中搜索。

回答

1

這只是一種解決方法,但您可以使用許多類方法創建自定義接口(以便不需要創建實例),其中每個方法表示一個常量。

這種方式常數將只能按照您詢問的方式訪問(即:Day.MONDAY[Day MONDAY])。

+0

沒有C++/Java風格的靜態類變量,對吧?這就是爲什麼類方法.. Thx爲你的想法,它會工作,但當然定義所有這些方法將太多鍵入.. – iseeall