私たちのアプリケーションには、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;
問題を確認するための小さなデモを作成し、そのコードを表示し、このコンテキストに「self」が何であるかを説明してください... – Wain
彼は自己にcompletマルチ次元配列が含まれていると伝えます。 –
自己はちょうど任意で、デリゲートメソッドを含む任意のクラスである可能性があります。 スニペットにコードを調整していただきありがとうございます。 – HugglesNL