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

时间:2011-08-11 01:32:46

标签: objective-c ios xcode

我有一个封装异步NSURL请求的对象。我该什么时候发布呢?

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

分析在XCode中说我应该立即释放它 - 但这不对,因为它必须处理URLRequest回调。

用于释放处理异步事件的对象的适当模式是什么?

我猜我应该在请求完成时发布(connectionDidFinishLoading)。如果是这样,我怎么能阻止 Analyze 抱怨呢?

3 个答案:

答案 0 :(得分:4)

您应该在使用它的类中维护对它的引用,然后立即将其废弃。然后,您的类可以在完成后删除引用。像这样:

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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