iOS列舉(位移列舉)

2021-07-23 21:49:11 字數 2091 閱讀 7324

在程式語言中,一般用乙個數值來代表某一狀態,這種處理方法不直觀,易讀性差。如果能在程式中用自然語言中有相應含義的單詞來代表某一狀態,則程式就很容易閱讀和理解。也就是說,事先考慮到某一變數可能取的值,盡量用自然語言中含義清楚的單詞來表示它的每乙個值,這種方法稱為列舉方法,用這種方法定義的型別稱列舉型別。

定義的列舉型別名稱通常與專案的類檔案字首相同,或者是類庫框架縮寫,或者跟隨具體業務名,如果開頭是縮寫要大寫表示,跟隨其後的命名應採用駝峰命名法則,命名應準確表述列舉表示的意義,列舉中各個值都應以定義的列舉型別開頭,其後跟隨各個列舉值對應的狀態、選項或者狀態碼。

同時只能有一種,如」jfstateerror」,」jfstateunknow」,不可能同時是jfstateerror和jfstateunknow。如下

typedef enum

jfstate jfstate;

另外,我們經常在switch語句中使用列舉來表示各個狀態,根據各個狀態來進項判斷。如下

jfstate state = jfstateok;

switch (state)

break;

case jfstateerror:

break;

case jfstateunknow:

break;

}

定義選項的時候。若這些選項可以彼此組合,則更應如此。只要列舉定義得對,各選項之間就可通過「按位或操作符」(bitwise or operator)來組合。例如,ios ui框架中有如下列舉型別,用來表示某個檢視應該如何在水平或垂直方向上調整大小。

使用列舉定義選項,每個選項均可啟用或禁用,使用上述方式來定義列舉值,每個列舉值所對應的二進位制表示中,只有1個二進位制位的值是1。用「按位或操作符」可組合多個選項。

用 | 來隔開

首先來補充下位運算的知識吧 ^_^

1、按位與」&」

只有對應的兩個二進位均為1時,結果位才為1,否則為0

比如9&5,其實就是1001&0101=0001,因此9&5=1

二進位制中,與1相&就保持原位,與0相&就為0

2、按位或」|」

只要對應的二個二進位有乙個為1時,結果位就為1,否則為0。

比如9|5,其實就是1001|0101=1101,因此9|5=13

3、左移<<

把整數a的各二進位全部左移n位,高位丟棄,低位補0。左移n位其實就是乘以2的n次方。

例如1<<2 就是0001左移2為0100,因此1<<2=4

列舉定義如下:

typedef ns_options(nsuinteger, actiontype) ;
列舉判斷處理:

- (void)action:(actiontype)type

if ((type & actiontypeup) == actiontypeup)

if ((type & actiontypedown) == actiontypedown)

if ((type & actiontypeleft) == actiontypeleft)

if ((type & actiontyperight) == actiontyperight)

}

於是,呼叫的時候我們通常這麼寫

actiontype type = actiontypeup | actiontypeleft | actiontyperight | actiontypedown; // 15

[self action:type];

1、定義這個actiontype的選項為四個,這裡按位異或,0001|0010|0100|1000=1111,得到結果這個type為15。

2、呼叫方法[self action:type],進行按位與操作:type & actiontypeup,1111&0001=0001,得到這個是否選擇了該選項。然後便可以進行判斷了。

iOS 位移列舉

之前,我們一般都採用c語言的方式定義列舉,這種列舉可以稱為普通的列舉。typedef enum directiontype 但是我們在檢視蘋果的sdk或者看一些第三方庫時會像下面這樣定義列舉。比如sdwebimage 中這樣定義列舉,這稱為位移列舉。下面我結合實際應用,說明一下 位移列舉 impor...

位移列舉詳情

列舉 在數學和電腦科學理論中,乙個集的列舉是列出某些有窮序列集的所有成員的程式,或者是一種特定型別物件的計數。這兩種型別經常 但不總是 重疊。1 是乙個被命名的整型常數的集合,列舉在日常生活中很常見,例如表示星期的sunday monday tuesday wednesday thursday fr...

iOS開發筆記(十二) 位移列舉

在程式語言中,一般用乙個數值來代表某一狀態,這種處理方法不直觀,易讀性差。如果能在程式中用自然語言中有相應含義的單詞來代表某一狀態,則程式就很容易閱讀和理解。也就是說,事先考慮到某一變數可能取的值,盡量用自然語言中含義清楚的單詞來表示它的每乙個值,這種方法稱為列舉方法,用這種方法定義的型別稱列舉型別...