1

我这样定义枚举:

typedef enum sortByWhatUpperType{
    //sortByRating=0,
    sortbyDistance=1,
    sortbyBuildingorProminent=0
} sortbyWhatBottomType;

然后我创建了一个属性

@property enum sortByWhatUpperType sortByWhat;

这就是自动完成建议我做的

-(void) setSortByWhat:(enum sortByWhatUpperType)sortByWhat
{
    [[NSUserDefaults standardUserDefaults]setInteger:sortByWhat forKey:SortByWhat];
}
-(sortbyWhatBottomType) sortByWhat
{
    return [[[NSUserDefaults standardUserDefaults] objectForKey:SortByWhat] unsignedIntValue];
}

所以那个枚举似乎有两种类型。sortByWhatUpperType 和 sortbyWhatBottomType。

为什么我们有 2 个关键字?为什么不只有一个?我错过了什么?哪一种是真正的类型?

枚举 sortByWhatUpperType 是 sortbyWhatBottomType 的同义词吗?

有什么见解吗?

这是在objective-c中进行枚举的标准方法吗?

4

1 回答 1

2

您已经定义了两种类型。一个名为 的枚举sortByWhatUpperType,一个名为 的别名sortbyWhatBottomType。该typedef enum语句由两部分组成 - 枚举和 typedef。你可以省略 typedef 并输入

枚举 sortByWhatUpperType{ //sortByRating=0, sortbyDistance=1, sortbyBuildingorProminent=0 };

但是,每当您想声明该类型的变量时,您都需要 ty type enum。别名可以让你省略它。

s 的语法相同struct。但仅在 C 中。在 C++ 中,即使没有 typedef,您也可以默认省略 enum/struct/class。

于 2012-10-18T01:52:10.020 回答