2012-08-31 91 views
0

我在應用程序的內存管理方面遇到了一些問題。我分配一個NSView類,並把它放在我的Windows之一。過了一段時間後,我從超級視圖中移除了對象,然後在其中放置了另一個對象。我遇到的問題是,當我刪除它時內存不會被釋放。它繼續保持與之前一樣多的內存,並且如果我添加更多該類,它將繼續堆積到內存中。我的問題是,刪除該對象是否會刪除該類所擁有的所有對象,或者即使在刪除該對象之後仍然保留一些指針?如有必要,我可以發佈代碼。從SuperView中刪除對象,但內存仍然分配? (ARC)

謝謝!

編輯: 下面是我用它來給它分配

MyClass *theClass1 = [[MyClass alloc] initWithFrame:frameRect]; 
[self.window.contentView addSubview:theClass1]; 

代碼下面是我用它來釋放它

[[self.window.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

代碼我一個計時器創建它,每分鐘更新一次。我沒有在其他地方引用它。

+0

你可以分享你聲明,創建,添加和刪除子視圖的代碼嗎?你在別的地方引用它嗎? – sch

回答

1

對於每個類的每個實例,應該分別處理每個對象的內存。刪除一個實例不應該影響其他實例的分配(除非您有一些自定義代碼查找該類的其他實例)。

至於拆除的NSView,removeFromSuperview確實釋放接收(視圖被移除),這就是爲什麼在NSView蘋果文檔到retain說,如果仍然是以後需要它。

發佈聲明,實例化,添加和刪除的代碼會對更具體的答案有所幫助。

+0

屬於該類實例的對象怎麼樣?如果我擺脫了這個視圖,那個視圖上的對象是否仍然駐留在內存中? –

+0

好問題。根據定義,當一個對象被釋放時,它的屬性也會被釋放,除非你將它們保留在別處。 –

相關問題