2013-03-18 108 views
1

我有一個數組包含Storeable mutableCopy類型的對象。我釋放數組,釋放數組之前是否釋放所有對象?這會造成泄漏嗎?

NSMutableArray *stores=[[NSMutableArray alloc]init]; 
[stores addObject:[store1 mutableCopy]]; 
[stores addObject:[store2 mutableCopy]]; 
[stores addObject:[store3 mutableCopy]]; 
... 
[stores release]; 
+1

將它們自動釋放爲已消耗。 addObject將保留它們,removeObject或removeAllObjects將釋放它們。如果你不自動釋放它們,那麼你可以在釋放數組存儲之前釋放數組對象。但是,autorelease更智能,更安全。 – 2013-03-18 17:43:53

回答

6

如果你不使用ARC,那麼你需要在某個時候釋放你的對象,因爲- mutableCopy法+1的保留計數創建一個新對象。爲避免泄漏,你應該寫:

[stores addObject:[[store1 mutableCopy] autorelease]; 

現在,沒有理由不使用ARC。如果你使用ARC,你很好,你不要在任何地方撥打- release

4

是的。

你應該使用:

[stores addObject:[[store1 mutableCopy] autorelease]]; 
+1

甚至更​​好的是使用ARC。 – zoul 2013-03-18 17:29:54