2011-09-12 10 views
0

私はthree20を使用しており、TTRemoteExamplesの例のようなモデルを実装しています。問題は次のとおりです。ページをクリックして開くと、TTURLRequestが送信したデータをリモートから取得して、別のページを開くためにクリックします。しかし、以前のネットワーク要求はまだ私の読み込まれたデータが混乱しています。だから私は別のページに切り替えると、以前のネットワーク要求をキャンセルする方法を知りたい。または、同じページで新しいリクエストを行うためにボタンをクリックしたとき。Three20:キャンセルネットワークリクエスト

感謝〜

答えて

1

、TTURLRequestをキャンセル(通常はインスタンス変数に)それへの参照を保持し、その後、それを「キャンセル」メッセージを送信します。

[self.myRequest cancel]; 

あなたは、デリゲートはキャンセルされ、要求の通知を受け取りたくない場合は::そうのような

// I'm assuming self is the delegate here, that may not be true 
[[self.myRequest delegates] removeObject:self]; 
[self.myRequest cancel]; 

あなたは一般的にも、あなたのビューコントローラのdeallocでこれを行うことになるでしょう方法。 viewControllerの割り当てが解除された後でリクエストが続行されると、デリゲートメッセージをそこに送信しようとすると、不正なアクセスクラッシュが発生します。

キャンセルするタイミングは、あなた次第です。ユーザーがView Controllerを離れるときに停止する必要がある場合は、UIViewControllerのviewWillDisappear:またはviewDidDisAppear:メソッドを実装します(superを呼び出すことを忘れないでください)。

+0

ありがとうございました。私はこの問題を解決するためにこれを使います:[[TTURLRequestQueue mainQueue] cancelRequestsWithDelegate:self];しかし、私はあなたに私の役に立つ点を教えてくれたので、私はあなたの印をつけるでしょう!ありがとうございました! –

+0

ああ、それはかなり良いコールです! –