Objective c 如何将此枚举转换为NS_枚举?

Objective c 如何将此枚举转换为NS_枚举?,objective-c,enums,32bit-64bit,Objective C,Enums,32bit 64bit,我一直在努力将Objective-C代码转换为使用NS类型,这样我们就可以更轻松地在32位和64位之间切换。我遇到的大多数enums如下所示: typedef enum { ValueA = 0, ValueB, ... ValueN, } NameOfEnum; typedef NS_ENUM(NSInteger, NameOfEnum) { ValueA = 0, ValueB, ... ValueN, }; 因此,我只需将

我一直在努力将Objective-C代码转换为使用
NS
类型,这样我们就可以更轻松地在32位和64位之间切换。我遇到的大多数
enum
s如下所示:

typedef enum {
    ValueA = 0,
    ValueB,
    ...
    ValueN,
} NameOfEnum;
typedef NS_ENUM(NSInteger, NameOfEnum) {
    ValueA = 0,
    ValueB,
    ...
    ValueN,
};
因此,我只需将
typedef enum
替换为
typedef NS_enum(NSInteger,NameOfEnum)
,删除后面的NameOfEnum,然后继续,生成如下代码:

typedef enum {
    ValueA = 0,
    ValueB,
    ...
    ValueN,
} NameOfEnum;
typedef NS_ENUM(NSInteger, NameOfEnum) {
    ValueA = 0,
    ValueB,
    ...
    ValueN,
};
但是,有一个特殊的库将其枚举格式化如下:

enum NameOfEnum
{
    ValueA = 0,
    ValueB,
    ...
    ValueN,
};
typedef enum NameOfEnum NameOfEnum;

如何转换此值?直观地说,我想用我的标准
typedef NS_enum(NSInteger,NameOfEnum)
替换
enum NameOfEnum
,然后完全删除最后一行这样做是正确的,还是可能会打破这个庞大的库中的其他东西?

你是正确的。最后一个先创建一个枚举,然后创建一个同名的类型。

谢谢!这一变化是否会产生任何可预见的问题?这是同一回事。在早期的“C”中,最后一个例子很常见。