我正在尝试使用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/
它似乎解决了我的问题..我仍然不知道它是否是最好的解决方案。我想我会把它发布在这里,因为它也可以帮助其他人。
答案 0 :(得分:3)
您可以使用连接对象的-hash
值作为键:
[clients setObject:client forKey:[connection hash]];
我会远离实际的网址或类似的内容,因为两个请求可能会有相同的网址。