0
Apple guide对于释放连接对象非常具体:它在didFailWithError
和connectionDidFinishLoading
中完成。带有NSURLConnection的异步请求:何时发布
然而,当我这样做,我后来在zombi模式
*** -[NSURLConnection releaseDelegate]: message sent to deallocated instance 0x1001045b0
似乎得到这个,有一个在AppKit的一些代码,释放我的连接。
我很乐意假设苹果指南是错误的,但不想得到一些可怕的内存泄漏或引入一些细微的不兼容与旧的OSX版本或类似的东西。
在这种情况下忽略文档安全吗?
编辑
代码创建请求
URLConnectionDelegate *delegate = [[URLConnectionDelegate alloc] initWithSuccessHandler:^(NSData *response) {
...
}];
[NSURLConnection connectionWithRequest:request delegate:delegate];
// I do not release delegate when testing for this issue, not sure whether I should in general
Delegate类本身
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
successHandler(receivedData);
[receivedData release];
Block_release(successHandler);
// do we really need this????????
[connection release];
}
从文档:'NSURLConnection`在初始化时保留其委托。它会在连接完成加载,失败或取消时释放委托。'看起来您已经过度释放委托。 – 2011-02-06 02:29:49
@Bavarious我不在这里发布代表。 (我是否应该是另一个问题)当我添加`[连接释放]时出现错误;`当我删除它时消失。 – 2011-02-06 02:32:21