2009-04-27 18 views
1

私は現在、UIViewUIScrollViewに表示するアプリケーションを開発中です。このUIScrollViewUIViewControllerの内部にあります。UIScrollViewからのサブビューの削除とメモリリーク

ループでは、新しいUIViewautoreleaseを作成してスクロールビューに追加します。これが問題だろうか?

ビューコントローラを解放しようとすると、ラベル、イメージなどを含むすべてのサブビューがメモリに残ります。

これらのオブジェクトを削除するにはどうすればよいでしょうか?

答えて

1

いくつかのコードを見ずにわかるのは不可能です。疑わしいと思われるコードのスニペットを投稿してください。 Memory Management Programming Guide for Cocoaに記載されているすべてのルールに従っていることを確認してください。

2

私は、これは何が起こっているかもしれないと思う:

あなたはUIScrollViewのにUIViewのを追加すると、UIScrollViewのは、それを保持します。また、UIScrollViewとNSAutoreleasePoolによってオブジェクトが保持されるように、UIViewでautoreleaseを呼び出しています。 viewControllerを解放すると、保持カウントが1つ下がりますが、現在のNSAutoreleasePoolのドレインコールを取得するまで、オブジェクトは割り当て解除されません。

ループ内のオブジェクトを自動解放しないでください。それらをUIScrollViewに追加し、手動で解放してください。このようにして、UIScrollViewはこれらのオブジェクトの唯一の所有者になります。

関連する問題