2011-06-01 141 views

回答

0

是的。它還會在保留計數達到零時釋放包含在內的所有對象。

2

是的,它會保留這個對象。該對象將在數組發佈時釋放。如果您要添加已分配給數組的對象,請確保在添加對象後釋放它們。

Object *o = [[Object alloc]init]; 
NSMutableArray *array = [[NSMutableArray alloc] init]; 
[array addObject:o]; 
[o release]; 
[array release]; 
2

是的,集合(集合,數組,字典)中的任何內容都將保留在集合中。當然,如果收藏品保留在第一位。

一旦你在集合中添加任何東西,你需要釋放它,如果你是所有者。

0

答案是肯定的。

而在未來,以下是您可以如何測試這些情況。您可以使用以下方法找出對象的保留數:

NSLog(@"Count: %d", [object retainCount]); 

使用此代碼在將對象添加到數組之前和之後自己查看。

但是我必須警告你,很多人建議不要使用retainCount來做任何事情。話雖如此,我認爲可以用它來追蹤對象的增加和減少(比如在我的答案中),但沒有其他更多。

不要依賴於代碼中的retainCount值;只需使用差異來追蹤分配和釋放。

+0

有[很好的理由**不**使用retainCount](http://stackoverflow.com/questions/4636146/when-to-use-retaincount)... – albertamg 2011-06-01 17:07:26

+0

有趣的你提到,因爲我只是將要編輯我有關你所說的話的答案。我同意你不能使用retaincount作爲絕對值,也就是說,我不想依賴它來進行操作。我相信使用retaincount來跟蹤對象的保留數是否增加,畢竟是有用的。例如,就像在我的回答中一樣,在將對象添加到數組之前和之後立即使用retainCount調用,實際上將有助於瞭解是否增加了retainCount。這是有原因的,畢竟:) – Sid 2011-06-01 17:41:14