[英]How to define several variable types in one .h file using `typedef NS_ENUM`
我已經使用typedef NS_ENUM
來重組舊代碼中的數據常量。 使用此處找到的方法,每個typedef
都在一個.h
文件中聲明,該文件可以導入到項目中的任何類。 .h文件的內容包裝在給編譯器的消息中。 這對於int
變量非常有效。
MYCharacterType.h
#ifndef MYCharacterType_h
#define MYCharacterType_h
typedef NS_ENUM(NSInteger, MARGIN)
{
MARGIN_Top = 10,
MARGIN_Side = 10,
MARGIN_PanelBaseLine = 1
};
...
#endif /* SatGamEnumType_h */
但是當我嘗試包含float
變量時,Xcode抱怨
“非整數類型'NSNumber'是無效的基礎類型”
例如
typedef NS_ENUM(NSNumber, LINE_WIDTH) {
LINE_WIDTH_Large = 1.5,
LINE_WIDTH_Medium = 1.0,
LINE_WIDTH_Small = 0.5,
LINE_WIDTH_Hairline = 0.25
};
我是否使用NSValue
或NSNumber
收到相同的消息,所以我懷疑typedef NS_ENUM
不是定義float
變量的方式(至少是我使用它的方式)。
此答案中的方法僅允許我執行已經在一個文件中組織的工作,而沒有提供在同一文件中重新組織float
變量的方法。 有人可以解釋一下如何做到這一點,以便所有變量都在一個.h
文件中定義,而不管它們的類型如何? 謝謝
解
我以不同的方式回答問題后,rmaddy回答了此問題。
在一個.h
..中定義不同的枚舉,就像將其添加到一個文件中一樣。
typedef NS_ENUM(NSInteger, MARGIN)
{
MARGIN_Top = 10,
MARGIN_Side = 10,
MARGIN_PanelBaseLine = 1
};
typedef NS_ENUM(long, ENUM_2)
{
ENUM_2_1 = 10,
ENUM_2_2 = 20,
ENUM_2_3 = 30,
};
typedef NS_ENUM(long, ENUM_3)
{
ENUM_3_1 = 10,
ENUM_3_2 = 20,
ENUM_3_3 = 30,
};
// And so on as many as you want
還有第二個問題,枚舉只能是整數數據類型,例如int
, long
, long long
, unsigned int
, short
等。您不能使用任何非整數類型(例如float
或double
,甚至不能使用任何目標c類型。
您可以對浮點值進行枚舉映射,例如https://stackoverflow.com/a/8867169/1825618
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.