Iphone 在这种情况下,如何创建自动删除词典?

Iphone 在这种情况下,如何创建自动删除词典?,iphone,objective-c,ios,cocoa-touch,nsdictionary,Iphone,Objective C,Ios,Cocoa Touch,Nsdictionary,我有一个名为entries的NSMutableArray实例,我想将它的一个值(NSDictionary)发送给一个方法,但我正在考虑如何避免它泄漏或正确地释放它。以下是我现在正在做的: NSDictionary *pdata = [self.entries objectAtIndex:indexPath.row]; [self start_download:pdata]; [pdata release]; // <--> Is it ok to do this ? 谢谢你的帮

我有一个名为entries的NSMutableArray实例,我想将它的一个值(NSDictionary)发送给一个方法,但我正在考虑如何避免它泄漏或正确地释放它。以下是我现在正在做的:

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

[self start_download:pdata];

[pdata release]; // <--> Is it ok to do this ?
谢谢你的帮助


Stephane

您有开始下载的委托方法来处理下载完成的问题吗?然后你应该发布它。

你有开始下载的委托方法来处理下载完成的问题吗?你应该发布它。

你没有分配、复制或保留pdata,所以你不会发布它。

你没有分配、复制或保留pdata,所以你不会发布它。

你绝对不应该发布pdata,因为你从来没有保留过它-objectAtIndex:返回非所有者对象。If-start_download:返回后需要引用pdata,例如,如果它为某个异步进程保留pdata,那么它应该保留pdata本身,然后在完成后释放pdata,但这与粘贴的代码位正交


如果您还没有这样做,您应该阅读。

您绝对不应该发布pdata,因为您从未保留过它-objectAtIndex:返回非所有者对象。If-start_download:返回后需要引用pdata,例如,如果它为某个异步进程保留pdata,那么它应该保留pdata本身,然后在完成后释放pdata,但这与粘贴的代码位正交


如果您还没有这样做,您应该阅读。

我应该开始下载并保留pdata,然后在完成后发布它。让需要保留和释放数据的例程自己保留和释放数据总是一个好主意,这样你就不必关心对象是如何到达你的以及之后会发生什么。

我会开始下载并在pdata上保留数据,然后在完成后释放它。让需要保留和释放数据的例程自行保留和释放数据总是一个好主意,这样您就不必关心对象是如何到达您的,以及之后会发生什么