C與Objective C中的列舉 位移列舉

2021-07-26 18:57:23 字數 1420 閱讀 6247

1.在c語言

中我們用到一串有關聯,被當作判斷狀態依據的常量時,會用到列舉enum,其使用:

enum week;
預設情況mon = 0;後面依次加1,也可以自己指定:

enum week;
這樣mon = 1;後面依然依次加1.

2.在objective-c

中,因為版本,有幾種實用列舉的樣式。

使用c語言樣式:

enum testtt;

switch (tt)

感覺用起來很不爽,那麼:

typedef enumtest;

test tt;

switch (tt)

還是不夠oc:

typedef ns_enum(nsinteger,test);

test tt;

switch (tt)

嗯,這回就非常oc了,推薦這樣使用

3.按位位移列舉

typedef ns_enum(nsinteger,test);

nslog(@"t1 = %ld",t1);

nslog(@"t2 = %ld",t2);

nslog(@"t3 = %ld",t3);

nslog(@"t2 = %ld",t4);

nslog(@"t3 = %ld",t5);

nslog(@"t3 = %ld",t6);

輸出結果為1,2,4,8,16,32 。

那麼什麼情況用這種列舉呢?先上**:

typedef ns_enum(nsinteger,test);

test tt= (t3|t6);

if((tt&t1))else

if((tt&t3))else

if((tt&t5))else

if((tt&t6))else

輸出結果為:

2017-02-10 11:56:01.243 uikitlearn[2460:69675] 沒有t1

2017-02-10 11:56:01.243 uikitlearn[2460:69675] 有t3

2017-02-10 11:56:01.243 uikitlearn[2460:69675] 沒有t5

2017-02-10 11:56:01.244 uikitlearn[2460:69675] 有t6

當我們對於乙個事物的一種屬性要用多種狀態描述時,比如一行字,是 3號黑體有下劃線的,就應該這樣  3號|黑體|下劃線,用或的方式整合多種狀態,再判斷某種狀態有沒有。

Objective C與C 的聯絡與區別

objective c語言,該語言被認為是c語言的超集,賦予了c語言物件導向的能力,完全支援c c 語言,但和c 語言的物件導向有很大不同,它是以訊息機制為底的,oc方法的本質是 訊息傳送 即objc msgsend 底層是通過方法的 sel 查詢 imp。比如可以面向向不包含該方法的物件傳送該訊息...

Objective C中的繼承與復合技術

學習了objective c中有關類繼承的知識。紀錄如下 1 oop程式設計中有兩個技術 用於描述類與類或物件與物件之間的關係 乙個是繼承 另乙個是復合。2 在objective c中每個子類只能有乙個超類,這一點與c 不同。3 方法排程程式 該排程程式的功能非常重要,當乙個物件接收到乙個訊息後,排...

Objective C中的相關術語與思想

術語 類 class 表示物件型別的結構體,首字母大寫 物件 object 首字母小寫 例項 instance 即為 物件 訊息 message 物件可執行的操作,例如 shape draw 通過shape物件傳送draw訊息通知物件來繪製自身 方法 method 響應訊息,根據物件的類,訊息呼叫不...