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

そのため、列挙型には2つのタイプがあるようです。sortByWhatUpperTypeおよびsortbyWhatBottomType。

なぜ2つのキーワードがあるのですか?なぜ1つだけではないのですか?私は何が欠けていますか?どちらが本当のタイプですか?

列挙型sortByWhatUpperTypeはsortbyWhatBottomTypeと同義ですか?

洞察はありますか?

これは、Objective-Cで列挙型を実行する標準的な方法ですよね?

4

1 に答える 1

2

2つのタイプを定義しました。列挙型はsortByWhatUpperType、と呼ばれ、エイリアスはと呼ばれsortbyWhatBottomTypeます。typedef enumステートメントには、enumとtypedefの2つの部分があります。typedefを省略して入力することもできます

列挙型sortByWhatUpperType{//sortByRating = 0、sortbyDistance = 1、sortbyBuildingorProminent = 0};

しかし、その型の変数を宣言したいときはいつでも、ty型が必要になりますenum。エイリアシングを使用すると、それを省略できます。

同じ構文がsにも当てはまりますstruct。ただし、Cのみです。C++では、typedefがなくても、デフォルトでenum / struct/classを省略できます。

于 2012-10-18T01:52:10.020 に答える