所以我习惯使用这种格式来声明枚举类型:
typedef enum SortType {
SORT_BY_NAME,
SORT_BY_COMPANY,
SORT_BY_NONE
} SortType;
但我看到有人以这种方式宣布
typedef enum {
SORT_BY_NAME,
SORT_BY_COMPANY,
SORT_BY_NONE
} SortType;
两者似乎都有效,没有错误。但我想知道哪个是正确的。
答案 0 :(得分:3)
我建议:
typedef NS_ENUM(NSInteger, SortType) {
SortTypeName,
SortTypeCompany,
SortTypeNone
};
根据Apple开发人员指南和示例代码:Adopting Modern Objective-C > Enumeration Macros
答案 1 :(得分:0)
在这两者之间,本身并没有错误的形式。也就是说,目前推荐的在Objective-C中声明枚举的方法是使用NS_ENUM
宏:
typedef NS_ENUM(NSInteger, SortType) {
SORT_BY_NAME,
SORT_BY_COMPANY,
SORT_BY_NONE
};
来自Apple的Adopting Modern Objective-C指南:
NS_ENUM和NS_OPTIONS宏提供了一种简洁,简单的方法来定义基于C语言的枚举和选项。这些宏改进了Xcode中的代码完成,并明确指定了枚举和选项的类型和大小。此外,此语法以旧方式编译器正确评估的方式声明枚举,以及可以解释基础类型信息的新方法。
使用NS_ENUM宏来定义枚举,这是一组互斥的值:
NS_ENUM宏有助于定义枚举的名称和类型,在本例中名为UITableViewCellStyle,类型为NSInteger。枚举的类型应该是NSInteger。