2009-08-28 25 views
0

のは、私は、サーバーへのプロキシとして動作するようにココアでクラスを書いていましょう。私が把握したい場合は罰金だクラス階層に列挙型を変換

@interface ServerProxy : NSObject 
{ 
    MyConnectionStatus connectionStatus; 
} 

が、何:

enum 
{ 
    MyConnectionStatusDisconnected = 0, 
    MyConnectionStatusConnecting, 
    MyConnectionStatusConnected, 
    MyConnectionStatusCount 
}; 
typedef NSUInteger MyConnectionStatus; 

が、私はそうのように私のプロキシクラスでのライブ、それを持っていることがあります。接続の現在の状態を表現するために、列挙を考えますユーザーが読める接続状態の解釈?私はすぐに、オブジェクト指向プログラミングの領域を残している。この時点で

+(NSString*)statusStringForInt:(MyConnectionStatus)status; 

:私はこのような静的な機能を持っているかもしれません。クラス階層にこの列挙をリファクタリングするための最良の方法だろう何

+0

を参照してください。それは同じ答えです。 – Ken

+0

本当に同じ質問ではありません。答えは私の質問と同じように見えます。問題は、これをきれいな階層にする方法です。 –

+0

私はあなたがenumと同じ名前のクラスを返すメソッドの後ろだと思った。クラス階層を優先して列挙型を完全に取り除くことを求めている場合は、より詳細な情報が必要だと思います。クラスを使うことの障壁があなたのためにあることは明確ではありません。 – Ken

答えて

1

私はクラス階層にそれをリファクタリングではないでしょう。代わりに、NSStringの定数を使用します。これは、高速になるよう

// foo.h 
extern NSString *MyConnectionStatusDisconnected; 


// foo.m 
MyConnectionStatusDisconnected = @"Connection Status: Disconnected"; 

isEqualToString:は、最初のテストとして、ポインタの平等を行います。

あなたは、あなたがローカライズする必要がある場合(複数可)を提出あなたの文字列でConnection Status: Disconnectedを使用することができます。