0

私はここでいくつかのObjCソースを研究しており、コントローラーの1つにNSDictionary「」と呼ばれるタイプのプロパティがありますoverrideClassNames。キーとして、既存のインターフェイスのクラスが必要であり、値として、次のように既存のインターフェイスのサブクラスのクラスが必要です。

controller.overrideClassNames = @{(id)[DefaultType class] : [MySubClassedDefaultType class]};

のインスタンスDefaultTypeが必要な場合は常に、辞書を検索し、インスタンスが設定されている場合は、より特殊なインスタンスを作成します。

これが実際にObjCで一般的なアプローチであるかどうかを考えていますか?C#とJavaから来て、私の考えは、のインスタンスDefaultTypeが必要な場合に呼び出されるデリゲートファクトリメソッドを作成することでした。その後、クラスのユーザーは、より専門的なバージョンを返すことができます。あるいは(C#で)クラスをジェネリックにして、<T> : DefaultType, new()

4

1 に答える 1

1

これは主にファクトリパターンとは関係ありませんが、IMOのサブクラス化と関係があります-しかし

はい。これは、クラスオブジェクトを返すメソッドを持つ一般的な方法です-例としてosxで。コントロールにはCellClassがあります(描画を行うために割り当て/初期化されます)

シングルトンでは、次のようなものがよくあります。

_sharedInstance = [[[self class] alloc] init];
于 2012-11-30T20:53:50.013 に答える