2012-04-03 5 views
1

私は多くのaddSubviewとremoveFromSuperviewをやっているアプリケーションで作業していますが、アプリケーションが弱いメモリ管理のためにクラッシュしています。 addSubviewがビューの参照カウントを1つ増やしたかどうかを知りたいですか? removeFromSuperViewは参照カウントを1減らしますか?removeFromSuperviewおよびaddSubviewリレーションを参照カウントで使用しますか?

+0

[サブビューをリリースする方法]の複製が可能です(http://stackoverflow.com/questions/9976345/how-to-release-subviews) – jrturton

答えて

0

はい、あります。一般に、オブジェクト(オブジェクトのサブビューの配列を含む)にオブジェクトを追加すると、保持カウントが増加します。

0

あなたは、このようなビュー作成する場合はい、:

UIView *myView = [[UIView alloc] init]; 

を保持カウントが1であり、あなたが所有者です。

あなたが別のビューに、このビューを追加する場合は、2番目のビューは、あなたが解放する必要があるので、それの所有者になりますし、カウントを増加します:今

[mySecondView addSubView:myView]; 
[myView release]; 

、あなたがそれを削除する場合ビュー、あなたが実行します。removeFromSuperViewは、カウントをデクリメント原因

[myView removeFromSuperView]; 

そして、あなたのビューが完全に解放されます。

ので、要約:

  • のallocとaddSubViewは1つの各
  • リリースによって、あなたの数を増加し、removeFromSuperviewはい、正確に... addSubView意志1各
0

して、カウントをデクリメントしますビューの参照カウントを1つインクリメントし、removeFromSuperViewも1つ減らします。メモリ管理のいくつかの問題に直面している場合は、ビューの参照カウントをトレースしないようにしてください。

0

はいあなたが正しいですaddSubViewを一つのビューの参照カウントが追加されて増加し、removeFromSuperView減少。あなたはaddSubview

を呼び出した後に追加されているビューを解放する必要があるので、参照カウントを増加させないaddSubviewを呼び出す

0

はaddSubviewのために、それは「このビューは、受信機によって保持されている」と述べApple UIView reference documentを参照してください。

関連する問題