4

私のアプリでは、ものを管理するために、例としてClassAと呼ばれるクラス(今のところシングルトン)を使用しています。

シングルトンであるため、この動作を使用して、この動作を必要とする多くのクラスでこの一意のインスタンスを取得しました。

しかし、今では、このクラスをシングルトンとして保持することはできません。NSDocumentによるインスタンスが1つ必要です。

そこで、NSDocumentサブクラスにClassAのインスタンスを作成しましたが、問題は、このオブジェクトを必要とするクラスにこのオブジェクトを渡すことです。

私はこの種の構造を持っています:

Class1 <-Class2<-Class3<-ドキュメント->ClassA

Class1のDocumentのClassAのインスタンスにアクセスする必要があります。

依存性注入を使用して、initまたはsetterメソッドでClass1のClassAを渡すことができますが、DocumentはClass1に直接アクセスできないため、Class3、Class2、Class1の順に渡す必要があります。

これがそれを行う唯一の方法ですか?それとも、それを処理する別のより良い方法がありますか?

4

1 に答える 1

1

シングルトンの原則に戻りますが、オブジェクトNSDocumentのディクショナリへのキーとしてを使用します。ClassA何かのようなもの:

static NSMutableDictionary *_classCache = [[NSMutableDictionary alloc] init];

+ (ClassA *)classAForDocument:(NSDocument *)document
{
    ClassA *classA = [_classCache objectForKey:document];
    if (classA == nil)
    {
       // Initialise with something specific to the document I guess...
        classA = [[ClassA alloc] init];
        [_classCache setObject:classA forKey:document];
    }
    return classA;
}

Class{1,2,3}その場合、これは、それらが属するドキュメントを知っていることだけを必要とします。

于 2012-07-31T14:47:51.427 に答える