1

私は公式のAppleのサンプルに従っています

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

Instruments でコードを調べているときに、リリースされていない NSURLRequest が原因であるリークが見つかりました。私は今、[request release]直後に

NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];     

そしてそれはうまくいくようです。私は正しいですか?

よろしく

4

2 に答える 2

2

リクエストは自動解放されます。つまり、自動解放プールが解放を処理する必要があります。Cocoa アプリケーション内でそれを使用している場合は、自動解放されたオブジェクトの解放を処理する自動解放プールを自動的に設定する必要があります。

ココア以外のアプリで作業している場合は、自分で設定し、オブジェクトを解放するためにプールを解放/ドレインする必要があります。

alloc通常、 、copy、またはで作成されたオブジェクトをリリースする必要があるのは、mutableCopyを送信した場合だけですretain。つまり、作成した接続オブジェクトを解放する必要があります。そうし[[NSURLConnection alloc] init...ないと、リークが発生します。

自動解放プールに関するドキュメントへのリンクは次のとおりです。

于 2009-11-26T22:54:31.323 に答える
0

ああ、なるほど。いくつかの理由で、「公式」サンプルと私自身の実現を混ぜ合わせました:)私のコードでは、これを行っていました:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL: url];

そしてこれはもちろん解放されなければなりません。上記のサンプルは動作が異なります。昨夜はかなり遅かったようです。

しかし、あなたの答えに感謝します。

気が狂ってしまうことが 1 つあります。マーカーを設定したにもかかわらず、誰かが私の質問に回答しても、メール通知が届きません...

よろしく

于 2009-11-27T21:27:16.077 に答える