ビューコントローラをローカル変数ASIHTTPFormDataRequest request
のデリゲートに設定しました。ASIHTTPRequest popViewControllerAnimated:=>デリゲートEXEC_BAD_ACCESS
しかし、要求が完了する前に「戻る」をタップすると、ビューコントローラがポップされ、割り当てが解除されます。したがって、要求が完了し、今すぐ存在しないデリゲートに-requestDidFinish:
というメッセージを送信すると、アプリケーションはEXEC_BAD_ACECESS
例外でクラッシュします。
このクラッシュを解決するにはどうすればよいですか?
これを解決する方法の1つは、ナビゲーションコントローラがポップした直後にデリゲートをnilに設定することです。しかし、それが解決策なら、どうすればいいのですか? (ARCの
weak
参照は今甘いだろう。)私は考えることができるもう一つの方法は、
request
ビューコントローラのインスタンス変数を作成し、ビューコントローラのdealloc
方法で[request clearDelegatesAndCancel]; [request release];
を呼び出すことです。このアプローチはASIHTTPRequest Example Codeで概説されていますが、インスタンス変数の代わりにローカル変数を要求することをお勧めします。そして、この特定のビューコントローラは、設定テーブルビューコントローラであり、13個のスイッチを有する。サーバーへの自動保存の場合、各スイッチは、トグルされるたびに&が新しい要求を送信するように作成します。私がイヴァールを作ったなら、私は13を作らなければならないでしょう。それはたくさんのコードです!
考えられますか?アイデア?
ありがとうございます。これは貴重で完全に有効な回答ですが、私は[依頼委任を保持する](http://stackoverflow.com/questions/6515191/asihttprequest-popviewcontrolleranimated-delegate-exec-bad-access/6529829#6529829)のように ' NSURLConnectionは私がAppleの設計上の意思決定を信用しているので、よりクリーンで、View Controllerがポップされても要求が継続できるようになります。これは実際に私が望むものです。 – ma11hew28