私の質問のまとめ:NSURLConnectionはデリゲートを保持していますか?NSURLConnectionはデリゲートを保持していますか?
詳細な質問やシナリオ:
私はURLを取り込んで、URLが戻ることをJSONのNSDictionaryのを返しているJsonDownloaderというカスタムクラスを、持っています。
iPhoneアプリでは、このようなことをしています。この場合、呼び出し側のオブジェクトに、オブジェクト:それはreturnDataToへのコールバックを行い、JsonDownloaderダウンロードおよび解析
- (void)viewDidLoad {
JsonDownloder *temp = [[[JsonDownloader alloc] initWithURL:urlString returnDataTo:self]];
[temp release];
[super viewDidLoad];
}
が行われた場合(initメソッドは、プロセス全体をキックオフ)。
これはうまくいきます。私のWebサーバーの応答に30秒の遅れを導入しても、JsonDownloaderはまだ存在し、正しくコールバックします。
私の質問はこれです:何がJsonDownloaderをイベントサイクルの最後を過ぎて守っていますか?私はそれを明示的に発表しています。
NSURLConnectionはデリゲートでretainを実行する必要がありますが、ドキュメントには何も表示されませんでした。誰でもアイデアがありますか?
大きな質問と偉大な答え。私はこれで自分自身を苦労していましたが、私は代理人が保持カウントを均等に割り当てる直後に[自己解放]を追加することに決めました。私のクラスでは自己が委任されているので、保持カウントを増やす理由は見当たりませんでした。それが間違っていると、誰かが私に知らせてくれます。 – jocull
私はちょうど追加したい - ありがとう。不足しているマニュアル、パート327.これは、このような重要な事実がアップルの文書に言及されていないと信じている。私はそれを保持していると思っていましたが、確信が持てませんでした。ドキュメントは何も言わず、多くの場合、Cocoaフレームワークの代理人はほとんど保持されません。これは例外です。 – n13