我有一个名为entries的NSMutableArray实例,我想将它的一个值(这是一个NSDictionary)发送给一个方法,但我正在考虑如何避免它泄漏或正确释放它。这就是我现在正在做的事情:
NSDictionary *pdata = [self.entries objectAtIndex:indexPath.row];
[self start_download:pdata];
[pdata release]; // <--> Is it ok to do this ?
求助,
的Stephane
答案 0 :(得分:4)
您没有分配,复制或保留pdata,因此您不会发布它
答案 1 :(得分:3)
您绝对不应该发布pdata
,因为您从未保留过它。 -objectAtIndex:
返回一个非拥有对象。如果-start_download:
在返回后需要引用pdata
(例如,如果它在某个异步过程中保留它),那么它应该保留pdata
本身,然后它应该释放pdata
当它完成时,但它与您粘贴的代码位正交。
如果您还没有这样做,请阅读Cocoa Memory Management Rules。
答案 2 :(得分:2)
你是否有一个start_download的委托方法来处理下载完成?你应该放弃它。
答案 3 :(得分:2)
我会让start_download对pdata进行保留,然后在完成后释放它。拥有需要将数据挂起来保留并释放自己的例程总是一个好主意,这样你就不会关心对象如何到达你以及之后会发生什么。