2011-02-05 14 views
0

このフォーラムで初めてのNoobのポジションです。なぜこのコードはリークを引き起こしますか?

私は初めてのiPhoneアプリを書いています。問題のコードは、私のUITableViewCellをcellForRowAtIndexPathメソッドに移入することです。

Leaks Instrumentをオンにしてアプリを実行すると、漏れている部分が自分のコードのこの部分を指しています。私はこのサイトのさまざまな書籍や投稿のメモリ管理について読んできました。私の知る限り、以下のコードは必要なalloc/releaseコーディングガイドラインに準拠しているようです。ただし、Leaksツールはこの特定のセクションを指しています。私は単に理由を理解していない。

あなたのご協力をお待ちしております。

ModelClass * myModelData = [myTempDataArray objectAtIndex:[indexPath row]]; 

NSString * myURL = [[NSString alloc] initWithFormat:@"%@/images/%@", SERVER_URL, [myModelData publisherLogoFileName]]; 
NSURL * imageURL = [[NSURL alloc] initWithString:myURL]; 
[myURL release]; 
[[cell productImageM] setUrl:imageURL]; 
[imageURL release]; 
[[self objMan] manage:[cell productImageM]]; 

return cell; 
+0

スタックオーバーフローはまったくフォーラムではありません:) – zneak

+0

@zneak、フォーラムは、フォーラム-Digg-wiki-blog site –

答えて

1

リークツールは、オブジェクトがどこから解放されるべきかを教えてくれません。割り当てられた場所を教えてくれます。

コードのビットが正常に見えます。 imageURLを作成してからそれをリリースするのに十分長くmyURLを所有しています。 imageURLをセルのproductImageMに渡してから解放します。次に、所有していないオブジェクトに対して何らかの操作を行います。

[cell productImageM]によって返されるオブジェクトの型は、そのUrlプロパティを保持し、その後リークします。

+0

と言っても簡単です。 objMan objは私が書かなかったクラスのインスタンスです。それは画像のキャッシュを管理することと関係しています。私はそのコードを見てどこかでURLが漏れていることを知ります。しかし、それは私が書いたコードではないので、それは難しいかもしれません。 –

0

[ビルド]メニューの[ビルド&分析]オプションを使用できます。一般的には、漏れの正確な線を示すべきである。

関連する問題