我有一个封装异步NSURL请求的对象。我该什么时候发布呢?
StrangersRequest *request = [[StrangersRequest alloc] init];
request.strangersListener = strangersListener;
[request send];
分析在XCode中说我应该立即释放它 - 但这不对,因为它必须处理URLRequest回调。
用于释放处理异步事件的对象的适当模式是什么?
我猜我应该在请求完成时发布(connectionDidFinishLoading
)。如果是这样,我怎么能阻止 Analyze 抱怨呢?
答案 0 :(得分:4)
您应该在使用它的类中维护对它的引用,然后立即将其废弃。然后,您的类可以在完成后删除引用。像这样:
StrangersRequest *request = [[StrangersRequest alloc] init];
request.strangersListener = strangersListener;
[request send];
self.strangersRequest = request;
[request release];
答案 1 :(得分:2)
您可以按照NSThread
模型让对象保留,直到异步任务完成。
答案 2 :(得分:0)
一种解决方案是将其存储在ivar而不是局部变量中。