创建enum值默认为NSInteger



我理解当我们像下面这样声明enum时,值默认为"int"类型

enum{
    category0,
    category1
};

然而,我现在遇到了iOS支持64位的问题。我想的解决方案是防止在我的代码中改变很多,使这个enum值默认为"NSInteger"而不是"int"。根据我的理解,系统会决定NSInteger的类型是int还是long取决于它是在32位还是64位上运行。我很难理解enum,所以我会感谢你在这方面的帮助。由于

如果我按照注释的建议使用typedef:

typedef NS_ENUM(NSInteger, Category){
    category0,
    category1
}

我应该如何使用它?通常我比较它时,比如tableview的indexpath。Section,我这样做

if(indexpath.section == category0){
    ...
}

如果我声明了"Category",我需要使用它吗?对不起,我不太明白typedef

Try

typedef enum{
    category0,
    category1
} Category;

typedef NS_ENUM(NSInteger, Category) {
    category0,
    category1
};

还可以显式地将整数设置为枚举值

typedef NS_ENUM(NSInteger, Category) {
    category0 = 0,
    category1 = 1,
    category42 = 42
};

那么你可以像使用int

一样使用它们
if(indexpath.section == category0){
    ...
}

相关内容

  • 没有找到相关文章

最新更新