2011-09-12 3 views
0

Objective Cでは、列挙型を定義すると、すべての列挙型の値がどこにでも表示され、グローバル名前空間を詰まらせます。Objective Cでenum値の可視性を制限する方法はありますか?

私はそれをJavaスタイルにして、列挙型が列挙型の名前でしかアクセスできないようにしたいと考えています。

typedef enum 
{ 
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY, NUM_OF 
} Day; 

と私は は、単にMONDAYを呼び出すと、コンパイルエラーまたは少なくとも警告を生成し、列挙型の値にアクセスするための唯一の方法はDay.MONDAYまたはDay::MONDAYまたは[Day MONDAY]か...

のようなものだったことを確認します

JavaではEnumsまたはInterfacesを使用しますが、これはObjective-Cで実行可能ですか?

そうでない場合は、のようにすべての列挙型に名前を付けると、自動補完のポップアップで簡単に検索できるようになります。

答えて

1

これは回避策ですが、いくつかのクラスメソッドを持つカスタムインターフェイスを作成することができます(インスタンスを作成する必要はありません)。各メソッドは定数を表します。

このように定数にアクセスできるのは、あなたが質問したときだけです(つまり、Day.MONDAYまたは[Day MONDAY])。

+0

C++/Javaスタイルの静的クラス変数はありません。それはなぜクラスメソッド..あなたのアイデアのためのThx、それは動作しますが、もちろんそれらのすべてのメソッドを定義することはあまりにも多くの入力されます.. – iseeall

関連する問題