第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Objective-C中的typedef枚舉是什么?

Objective-C中的typedef枚舉是什么?

倚天杖 2019-07-27 14:41:52
Objective-C中的typedef枚舉是什么?我不認為我從根本上理解它enum是什么,何時使用它。例如:typedef enum {     kCircle,     kRectangle,     kOblateSpheroid} ShapeType;這里真的被宣布了什么?
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

三件事正在這里聲明:匿名枚舉類型聲明,ShapeType在聲明該匿名枚舉一個typedef和三個名字kCirclekRectanglekOblateSpheroid被聲明為整型常量。

讓我們打破它。在最簡單的情況下,枚舉可以聲明為

enum tagname { ... };

這聲明了帶有標記的枚舉tagname。在C和Objective-C(但不是 C ++)中,對此的任何引用都必須enum關(guān)鍵字開頭。例如:

enum tagname x;  // declare x of type 'enum tagname'tagname x;  // ERROR in C/Objective-C, OK in C++

為了避免必須在enum任何地方使用關(guān)鍵字,可以創(chuàng)建typedef:

enum tagname { ... };typedef enum tagname tagname;  // declare 'tagname' as a typedef for 'enum tagname'

這可以簡化為一行:

typedef enum tagname { ... } tagname;  // declare both 'enum tagname' and 'tagname'

最后,如果我們不需要能夠使用enum tagnameenum關(guān)鍵字,我們可以使enum匿名的,并且只與typedef名稱聲明它:

typedef enum { ... } tagname;

現(xiàn)在,在這種情況下,我們聲明ShapeType是匿名枚舉的typedef名稱。 ShapeType實際上只是一個整數(shù)類型,且只能用于聲明持有在聲明中列出的值中的一個變量(即,一kCirclekRectanglekOblateSpheroid)。但是,您可以ShapeType通過強制轉(zhuǎn)換為變量賦值,因此在讀取枚舉值時必須小心。

最后kCircle,kRectanglekOblateSpheroid被聲明為全局命名空間的整型常量。由于未指定特定值,因此將它們分配給以0開頭的連續(xù)整數(shù),因此kCircle為0,kRectangle為1,kOblateSpheroid為2。


查看完整回答
反對 回復(fù) 2019-07-27
?
慕斯709654

TA貢獻1840條經(jīng)驗 獲得超5個贊

Apple建議在Xcode 4.4之后定義這樣的枚舉:

typedef enum ShapeType : NSUInteger {
    kCircle,
    kRectangle,
    kOblateSpheroid} ShapeType;

它們還提供了一個方便的宏NS_ENUM:

typedef NS_ENUM(NSUInteger, ShapeType) {
    kCircle,
    kRectangle,
    kOblateSpheroid};

這些定義提供更強的類型檢查和更好的代碼完成。我找不到NS_ENUM的官方文檔,但您可以在此處觀看WWDC 2012會議中的“Modern Objective-C”視頻。

UPDATE:鏈接到官方文檔在這里。


查看完整回答
反對 回復(fù) 2019-07-27
?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

枚舉聲明了一組有序值 - typedef只是為此添加了一個方便的名稱。第一個元素是0等

typedef enum {Monday=1,...} WORKDAYS;WORKDAYS today = Monday;

以上只是shapeType標簽的枚舉。


查看完整回答
反對 回復(fù) 2019-07-27
  • 3 回答
  • 0 關(guān)注
  • 817 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號