列舉型別的使用優勢沒啥好說的。但經常需要將它與字串進行轉換方便顯示或其它需求。
在常見的方案中,多是先宣告,然後在實現檔案裡建立乙個對映表。這樣帶來的問題就是要分兩個檔案來管理,帶來管理不方便不好。使用前還在確保對映表已經初始化。顯然使用時還是有些許難受。
如果全部改用巨集來實現則會好管理很多,而且對於對映表可以採用惰性初始化原則,即只有訪問到時才建立。
enumdpodrecordtype;
typedef enum
dpodrecordtype dpodrecordtype;
const nsarray *___dpodrecordtype;
//建立初始化函式。等於用巨集建立乙個getter函式
#define cdpodrecordtypeget (___dpodrecordtype == nil ? ___dpodrecordtype = [[nsarray alloc] initwithobjects:\
@"a"
,\
@"cname
",\
@"mx
",\
@"txt
",\
@"ns
",\
@"aaaa
",\
@"srv
",\
@"url
", nil] : ___dpodrecordtype)
//列舉 to 字串
#define cdpodrecordtypestring(type) ([cdpodrecordtypeget objectatindex:type])
//字串 to 列舉
#define cdpodrecordtypeenum(string) ([cdpodrecordtypeget indexofobject:string])
Objective C中的列舉型別
列舉型別如果乙個變數只有幾種可能的值,那麼,可以把它定義為列舉型別 也稱為列舉 所謂列舉是指將變數的值一一枚舉出來,變數的值只限於列舉出來的值的範圍內。列舉型別的定義是以enum 關鍵字開頭,然後是列舉資料型別的名稱,而後是一系列值,這些值包含在一對花括號中,它們定義了可以給該型別指派的所有容許的值...
列舉和類型別
1.定義和初始化列舉 關鍵字enum 預設地,第乙個列舉成員賦值為0,後面的每個列舉成員賦的值比前面的大1。2.列舉成員是常量 可以為乙個或多個列舉成員提供初始值,用來初始化列舉成員的值必須是乙個常量表示式。enum forms 在列舉型別forms中,顯示將shape賦值為1。其他列舉成員隱式初始...
Objective C 型別編碼
在開發的時候我們會遇到後跟objctype const char types的方法。如 nsvalue valuewithbytes const void value objctype const char type nullable nsmethodsignature signaturewitho...