NSURLConnection的网络管理员

时间:2011-05-18 17:43:53

标签: iphone

我正在尝试使用NSUrlConnections创建类似网络管理器的东西。 为此,我希望能够发送多个请求,但我还希望能够识别响应到达时发出请求的客户端(委托)。 我创建了一个像这样的NSDictionary:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:SERVER_TIMEOUT];
....
[clients setObject:client forKey:connection];

in“ - (void)connectionDidFinishLoading:(NSURLConnection *)connection”我有这样的事情:

client = (id<RTANetworkDelegate>)[clients objectForKey:connection];
[clients removeObjectForKey:connection];

网络管理器是所有连接的委托,我做了一些预处理,然后我将(解析的)响应发送到正确的委托,它首先发送了请求。

不幸的是,似乎NSMutableURLRequest无法设置为字典中的键,因为它没有copyWithZone方法,我收到错误:

  

- [NSURLConnection copyWithZone:]:   无法识别的选择器发送到   实例

任何帮助将不胜感激! 谢谢!

=======================================

[编辑]我在此期间已经找到了这个:

http://blog.emmerinc.be/index.php/2009/03/15/multiple-async-nsurlconnections-example/

它似乎解决了我的问题..我仍然不知道它是否是最好的解决方案。我想我会把它发布在这里,因为它也可以帮助其他人。

1 个答案:

答案 0 :(得分:3)

您可以使用连接对象的-hash值作为键:

[clients setObject:client forKey:[connection hash]];

我会远离实际的网址或类似的内容,因为两个请求可能会有相同的网址。