簡體   English   中英

如何使用`typedef NS_ENUM`在一個.h文件中定義幾種變量類型

[英]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
    };

我是否使用NSValueNSNumber收到相同的消息,所以我懷疑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

還有第二個問題,枚舉只能是整數數據類型,例如intlonglong longunsigned intshort等。您不能使用任何非整數類型(例如floatdouble ,甚至不能使用任何目標c類型。

您可以對浮點值進行枚舉映射,例如https://stackoverflow.com/a/8867169/1825618

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM