2016-05-20 22 views
1

私たちのアプリケーションには、1つの複雑なグローバルデータオブジェクトがあります。このオブジェクトを呼び出すことができます。オブジェクトAは、クラスBのオブジェクトを持つ強く非原子的な配列を持ち、B1、B2、B3などと呼ぶことができます。これらのBオブジェクトのそれぞれは、C型のオブジェクト、C2など...配列内のオブジェクトの配列内のオブジェクトへの参照

この複雑な構造をアプリケーションの最初の起動時に作成すると、Cオブジェクトは非同期に画像のダウンロードなどを開始します。このプロセスが完了すると、デリゲート関数が呼び出されます。デリゲートが設定された後、この「終了イベントをロードする」が明確に開始されます。オブジェクトはシングルトンパターンでアクセスされます。

しかし、終了すると、Cオブジェクトのデリゲートはnilになります。

私たちは、オブジェクトを参照することと関係があると考えました。 Cのロードが終了し、我々は、デリゲートが何であるかをチェックするときに我々は、デリゲートを設定した瞬間、我々は単に

[[A objectAtIndex:x] objectAtIndex:y].delegate = self; 

によってCオブジェクトのデリゲートを設定するには、しかし、それはnilです。 ObjectAtIndexは読み取り専用のメソッドです。オブジェクトCには配列自体も含まれているため、ツリーをさらに深くすることができます。

この問題に対処するにはどうすればよいですか? 「コピー」ではなく、配列内のオブジェクトへの「参照」を取得できますか?

追加情報

上記の情報は任意であり、実際のコードではありません。起こっていることの印象を与えるだけです。

問題は、複雑なツリーに1つのオブジェクトが存在するはずですが、このオブジェクトを調整して後でもう一度チェックしても、調整は適用されませんでした。

デリゲートの宣言:あなたはこの共謀を避けるために、代わりにデリゲートのブロックを使用する必要があります

@property (strong,nonatomic) id<HKWidgetModel> delegate; 
+0

問題を確認するための小さなデモを作成し、そのコードを表示し、このコンテキストに「self」が何であるかを説明してください... – Wain

+0

彼は自己にcompletマルチ次元配列が含まれていると伝えます。 –

+0

自己はちょうど任意で、デリゲートメソッドを含む任意のクラスである可能性があります。 スニペットにコードを調整していただきありがとうございます。 – HugglesNL

答えて

0

Iの事。

+0

あなたは少なくとも例を挙げることができますか? –

+0

私が知りたいのは、現在どのような目的のために代理人を使用しているのですか? – Shreyank

関連する問題