2011-09-15 40 views
1

我有一個NSMutableArray實例稱爲條目,我想發送它的一個值(這是一個NSDictionary)的方法,但我想如何避免它泄漏或正確釋放它。下面是我在做什麼現在:如何在這種情況下創建一個autorelease NSDictionary?

NSDictionary *pdata = [self.entries objectAtIndex:indexPath.row]; 

[self start_download:pdata]; 

[pdata release]; // <--> Is it ok to do this ? 

THX幫助,

斯特凡

回答

3

你絕對不應該釋放pdata,因爲你永遠保留它。 -objectAtIndex:返回一個非擁有對象。如果-start_download:在返回後需要引用pdata(例如,如果它持有某個異步進程),那麼它本身應該保留pdata,並且隨後應該在完成時釋放pdata,但這與您粘貼的代碼位正交。

如果您還沒有這樣做,您應該閱讀Cocoa Memory Management Rules

2

你有start_download一個委託方法來處理與下載完了?那麼你應該釋放它。

+0

是的有一種方法來處理完成的下載 – Steve

4

你沒有頁頭,複製或保留PDATA,這樣你就不會釋放它

2

我會start_download在pdata上做一個保留,然後在完成時釋放它。有一些例程需要將數據保存到一個保留並釋放它們,這是一個不錯的主意,這樣你就不會在意該對象是如何得到你的,以及之後會發生什麼。