2010-04-06 59 views
0

我有幾個UIImagesView,我把它們放在MutableArray上。 MutableArray被保留。 我也將它們添加爲視圖的子視圖。iphone - 關於對象的通用問題

在視圖上添加每個經過的UIImageViews我釋放他們...例如...

[myView addSubview:myImageView]; 
[myImageView release]; 

如果我沒有錯,每個ImageView的現擁有2 retainCount,因爲它們也存儲在MutableArray。

現在我釋放視圖,因此,每個ImageView的retainCount下降到1

在某些時候,我做的:

myMutableArray = nil; 

是OK做到這一點?由於imageViews的retainCount爲1,我不確定是否將數組放入nil,存儲imageViews的數組將釋放圖像......我想是這樣,但我希望聽到您的掌握!

這會泄漏嗎?

感謝

回答

2

你應該忽略,因爲系統添加和刪除保留幕後計數保留計數,你不可能跟蹤它。

相反,您需要專注於匹配您自己創建的保留和釋放對。

在這種情況下,您唯一需要注意的是可以保留初始化圖像視圖。

通常它看起來是這樣的:

UIImageView *imgView=[[UIImageView alloc] initWithImage.... 
[myMutableArray addObject:imgView]; 
[myView addSubview:imgView]; 
[imgView release]; 

大功告成。數組和視圖將管理它們自己的保留,並且您將初始化的保留與發佈相匹配,並且與世界一切都是正確的。

+0

好的。謝謝!!!!!!!!!!! – SpaceDog 2010-04-06 21:33:38

0

是的,會泄漏!您將myMutableArray設置爲零而不釋放數組。這樣做會從NSMutableArray對象和它包含的所有UIImageView對象中泄漏內存。如果你想處置陣列及其內容,然後鬆開陣列就像你會釋放任何其他對象:

[myMutableArray release]; 
myMutableArray = nil; 

的陣列將發送釋放消息,它包含了每個對象。