2011-10-11 14 views
1

私は、オブジェクトのさまざまな属性とプロパティを定義するために、NSObjectクラスから継承したいくつかのクラスを作成したサンプルアプリケーションを作成しました。今私はサブクラスUIViewを持って、また、私のiPhoneの画面でそのオブジェクトを表示することができます。画面からUIViewオブジェクトを削除するには?

三角形を削除するときはいつも問題があります。私は一般的に[self removeFromSuperview];を呼び出して、画面からそのビューを削除します。

しかし、画面からビューを削除するだけで、オブジェクトを完全に削除しているわけではありません。

オブジェクトを完全に削除するにはどうすればよいですか?私はあなたの説明から集めるものと

+0

オブジェクトにリリースメッセージを送信します。 – iAmitWagh

答えて

2

- についてどのように:

[self removeFromSuperview]; 
[self release]; 

は、その仕事をしていますか?または、この種のロジックをView Controllerに配置する必要があります。その後、あなたは(、たとえばmyObjectという)をオブジェクトへの参照を持っている、そして使用:

[myObject removeFromSuperview]; 
[myObject release]; 

をスーパービューから削除すると、このオブジェクトを削除するという意味ではありません。あなたのオブジェクトは、UIView階層に接続されていなくても、とても生きることができます。

EDIT:(ピーターDeweeseさんのコメントを肉付けするために)

あなたはUIViewのを作成するときに、あなたがこれを行うことができます:

MyView* view = [[MyView alloc] initWithFrame:myViewRect]; 
[mySuperView addChild:view]; 
[view release]; 

これはあなたが何の長いビューを所有していないことを意味するが、スーパービューがありません。スーパービューは、子として追加されたときにビューを保持し、解放して放棄します。後で行うとき:

[self removeFromSuperview]; 

保持カウントは0になり、オブジェクトは自動的に削除されます。

いいアイデアPeter!

+2

あなたが保持していない限り、リリースする必要はありません。スーパービューに追加すると保持され、削除されると解放されます。 –

+0

Peter、私はあなたの答えを統合するために上記の私の答えを編集しました。私がコメントをupvoteすることができたら私は:) – Cthutu

+1

あなたは今コメントをupvoteすることができます!私はそれに応じてそれをダウンしました。 – Cthutu

関連する問題