iOSアプリケーションを作成し、imageStoreライブラリを使用してレイジーロードイメージを作成し、メモリにキャッシュします。 ViewControllerをオン(https://github.com/psychs/imagestore)iOSは呼び出しメソッドの前にデリゲートが存在するかどうかを確認します
私はimagestoreインスタンスを作成します。
imageStore = [ImageStore new];
imageStore.delegate = self;
画像がsuccessfulyロードされ、imagestore呼び出しデリゲートメソッド
- (void)imageStoreDidGetNewImage:(ImageStore*)sender url:(NSString*)url
reloadDataをやっていますセルを再描画するためのテーブルビュー。 すべてはうまく動作します。しかし、問題があります:もしViewController didUnload(ナビゲーションコントローラに戻る)とイメージがロードされて、アプリケーションがクラッシュで終了しました。イメージストアは、アンロードされたViewControllerのメソッドを呼び出すためです。
私は、次のやろう:私はviewDidUnloadセクションにこのコードを配置 1)のViewControllerに:
imageStore.delegate = nil;
imageStore = nil;
2)imageStoreでは、私はゼロのチェックを追加しました:
if(delegate != nil) {
...call delegate method
}
それは動作しますが、とにかく定期的にアプリがクラッシュする。
'2)'は不必要です。メッセージは 'nil'オブジェクトに安全に送ることができます。 – Nekto
お返事ありがとうございます!イメージがロードされ、viewcontrollerがアンロードされた場合、それは100%クラッシュせずに... –