什么时候应该释放异步使用的对象?
问题描述:
我有一个封装异步NSURL请求的对象。我应该什么时候发布它?什么时候应该释放异步使用的对象?
StrangersRequest *request = [[StrangersRequest alloc] init];
request.strangersListener = strangersListener;
[request send];
分析XCode中说我应该立即松开 - 但是这是不正确的,因为它必须处理的URLRequest回调。
发布处理异步事件的对象的适当模式是什么?
我猜我应该在请求完成时释放(connectionDidFinishLoading
)。如果是这样,我怎么能停止分析抱怨呢?
答
您可以按照NSThread
模型,让对象保留自己,直到其异步任务完成。
答
您应该在使用它的类中保留对它的引用,然后立即将其丢弃。然后,你的班级可以在完成时删除参考。类似这样的:
StrangersRequest *request = [[StrangersRequest alloc] init];
request.strangersListener = strangersListener;
[request send];
self.strangersRequest = request;
[request release];
+0
这将工作。谢谢! –
答
一个解决方案是将它存储在ivar中而不是局部变量。
是的。我喜欢。谢谢。 –