2012-05-03 19 views
0

以下のコードでメモリリークが発生しました。 ここで、self.firstURLConnは@property(非構造、保持)です。 オブジェクトの割り当てとiosの解放に関する問題

NSMutableURLRequest* req = [[NSMutableURLRequest alloc] initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0f]; 

self.firstURLConn = [[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease]; 

[req release];//memory leak here and with self.firstURLConn 

メモリがここに漏れているのはなぜ

答えて

0

firstURLConnがあなたのreqを保持します、firstURLConnがREQをリリースするときに割り当て解除のみされますREQ。

1

まだ商品>分析を実行しましたか?あなたがした場合は、私たちにメモリ漏れの問題ログを表示してください。

メモリリークの問題があるコードの行だけでなく、問題の原因となったコードのステップを示します。

ツールを使用して、ツールを使用することをお勧めします。コードの問題に関する詳細な情報が表示されます。

編集: req variable miss autorelease。ため、reqは2時間を保持しています。そのため、あなたのfirstURLConnのこの

NSMutableURLRequest* req = [[[NSMutableURLRequest alloc] initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0f] autorelease]; 

self.firstURLConn = [[[NSURLConnection alloc] initWithRequest:req delegate:self] autorelease]; 

[req release];//memory leak here and with self.firstURLConn 

のようなコードを変更する性質を保持して宣言しました。デリゲートメソッドを使用すると、デリゲートメソッドの内部でNSURLConnectionを解放しなければなりません(いつか将来的に)非同期に返すのでので、deallocメソッドでは、あなたは、このプロパティにnil

- (void)dealloc 
{ 
    self.firstURLConn = nil; 
    [super dealloc]; 
} 
+0

私の質問では、メモリが漏れている場所について述べました。 – Mann

+0

あなたのフルコードから分析しましょう。問題のクラス.hと.mコードを表示してください。 – Sakares

+0

私はすでに私の答えを編集し、あなたのコードを調整しようとします。 – Sakares

0

を設定する必要があります。 autoreleaseを削除し、完了したデリゲートメソッドと失敗したデリゲートメソッドにリリースを追加します。

関連する問題