2011-08-11 8 views
2

私は、非同期NSURL要求をカプセル化するオブジェクトを持っています。それをいつ放つべきですか?非同期で使用されるオブジェクトはいつリリースする必要がありますか?

StrangersRequest *request = [[StrangersRequest alloc] init]; 
request.strangersListener = strangersListener; 
[request send]; 

Xcodeでを分析し、私はすぐにそれを解放しなければならないと言う - それはURLRequestのコールバックを処理しなければならないので、それは正しくありません。

非同期イベントを処理するオブジェクトを解放するための適切なパターンは何ですか?

私は、要求が完了したら(connectionDidFinishLoading)リリースする必要があると思います。もしそうなら、どのように私は停止することができますはそれについて不満を分析する?

答えて

2

NSThreadモデルに従って、非同期タスクが完了するまでオブジェクトを保持することができます。

+0

はい。私はすきです。ありがとう。 –

4

これを使用するクラスでその参照を維持してからすぐにゴミ箱に入れてください。それから、あなたのクラスは完了時に参照を削除することができます。このようなもの:

StrangersRequest *request = [[StrangersRequest alloc] init]; 
request.strangersListener = strangersListener; 
[request send]; 
self.strangersRequest = request; 
[request release]; 
+0

それは動作します。ありがとう! –

0

解決策の1つは、ローカル変数ではなくivarに格納することです。

関連する問題