2

私の問題は説明するのは簡単ですが、解決するのは難しいようです。IconDownloader.m問題は、Apple の公式の例で提供されているようなカスタム クラスを使用してアイコンをロードすることで、ビューを解放するとクラッシュが回避されます。

クラスをアプリに追加しましたIconDownloaderが、このアプローチが適切なのは、テーブルビューがルートである場合のみであることは明らかです。大きな問題は、ビューがルート ビューでない場合です。Fe: 2 番目のビューのスクロールを開始し (アプリがアイコンをロードするようになりました)、ダウンロードを完了する時間を残さずにルートに戻ると、ビューを新しいアイコンで更新する必要があるため、アプリがクラッシュします。もう存在しません。

考えられる解決策の 1 つは、ビューに を実装することOperationQueueですが、このアプローチでは、ビューを変更したときにキューを停止し、戻ってきたときにキューを再起動する必要があり、N 個のキューを持つという考えは私を熱狂させません。

この問題の良い解決策を見つけた人はいますか?

4

1 に答える 1

5

答えは簡単です。dealloc で「cancelDownload」メソッドを使用します。

例えば。

- (void)dealloc {

 for (NSIndexPath *indexPath in [imageDownloadsInProgress allKeys]) {
  IconDownloader *d = [imageDownloadsInProgress objectForKey:indexPath];
  [d cancelDownload];
 }
 //...
    [super dealloc];
}

それは完全に動きます:-)

于 2010-12-03T05:53:07.030 に答える