什么时候应该释放异步使用的对象?

问题描述:

我有一个封装异步NSURL请求的对象。我应该什么时候发布它?什么时候应该释放异步使用的对象?

StrangersRequest *request = [[StrangersRequest alloc] init]; 
request.strangersListener = strangersListener; 
[request send]; 

分析XCode中说我应该立即松开 - 但是这是不正确的,因为它必须处理的URLRequest回调。

发布处理异步事件的对象的适当模式是什么?

我猜我应该在请求完成时释放(connectionDidFinishLoading)。如果是这样,我怎么能停止分析抱怨呢?

您可以按照NSThread模型,让对象保留自己,直到其异步任务完成。

+0

是的。我喜欢。谢谢。 –

您应该在使用它的类中保留对它的引用,然后立即将其丢弃。然后,你的班级可以在完成时删除参考。类似这样的:

StrangersRequest *request = [[StrangersRequest alloc] init]; 
request.strangersListener = strangersListener; 
[request send]; 
self.strangersRequest = request; 
[request release]; 
+0

这将工作。谢谢! –

一个解决方案是将它存储在ivar中而不是局部变量。