2011-10-11 34 views
1

我創建了一個示例應用程序,其中我創建了一些繼承自NSObject類的類,用於定義對象的不同屬性和屬性。現在我有一個子類UIView,並且能夠在我的iphone屏幕上顯示該對象。如何從屏幕上刪除UIView對象?

現在我遇到了一個問題,每當我想刪除一個三角形時,我通常會打電話給[self removeFromSuperview];,它會從我的屏幕中刪除視圖。

但它只是從屏幕上刪除視圖不完全刪除對象。

如何完全刪除對象?

+0

發送發佈消息到對象 – iAmitWagh

回答

2

從我從你的描述收集 - 怎麼樣:

[self removeFromSuperview]; 
[self release]; 

運作的?或者,你應該把這種邏輯放在你的視圖控制器中。然後,就是你有一個參考對象(比如,myObject的),然後使用:

[myObject removeFromSuperview]; 
[myObject release]; 

從超級視圖中刪除,並不意味着刪除此對象。您的對象可以非常活躍而無需連接到UIView層次結構。

編輯:(充實彼得迪威斯的評論)

當你創建一個UIView的,你可以這樣做:

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

這意味着你沒有長自己的觀點,但超級觀點並。超級視圖保留了你的視圖,當它作爲一個孩子添加時,你放棄它釋放。後來,當你這樣做:

[self removeFromSuperview]; 

保留計數將下降到0,您的對象將被自動刪除。

好主意彼得!

+2

除非它被你保留,否則你甚至不需要釋放它。當被添加到超級視圖時,它被保留,當被移除時它被釋放。 –

+0

彼得,我編輯了我的上面的答案來整合你的答案。如果我可以upvote評論,我會:) – Cthutu

+1

你現在可以upvote評論!我相應地如此。 – Cthutu