2012-02-10 15 views
1

値自体がint、unsigned int、NSIntegerかどうかを調べようとしています。私は誰かが彼らが署名のないintであると言うのを見たと思ったが、私が見たAppleのヘッダファイルでは負の値を格納していた。Objective-Cの列挙型とは何ですか

答えて

6

enumはObjective-CではなくC(およびC++)の機能です。列挙型を宣言すると、新しいCデータ型が宣言されます。

指定された列挙型のサイズは、intのサイズでもよく、宣言された列挙型の値を保持するだけの大きさでもかまいません。これはコンパイラ固有のもので、通常は列挙型の処理方法を制御するコンパイラ設定があります。

最大の列挙型はintであるため、常にenum値をintに変換できます。その逆は真実ではない。 intを必ずenum値に変換することはできません。

+0

これより少し微妙です。列挙型自体は、コンパイラ依存の整数型で、 'int'よりも小さい場合があります。しかし、enum *値*は実際には整数定数です。 –

0

これは列挙型です。指定された特定の値をとることができる独自の型を定義することができます。

typedef enum {  
    NBType1, 
    NBType2, 
    NBType2, 
} NBType 

メソッドに渡されたパラメータがタイプNBTypeであろう:あなたが列挙型などを持っていたのであれば What is a typedef enum in Objective-C?

は、この質問を参照してください。

+0

しかし、列挙に含まれる値の範囲はどのくらいですか。また、メソッドが列挙から値を渡しているが、それを知らなかった場合は、そのパラメータの型はどうなりますか? – Brian

+0

これは、あなたがenumを定義するまでのタイプです。 – barfoon

1

列挙される整数は、最大で32ビットのsigned intです。