这个博客提供了一个很好的解决方案来处理多个 NSURLConnections:创建一个自定义的“CustomURLConnection”类,它有一个额外的tag
财产。
http://blog.emmerinc.be/index.php/2009/03/02/custom-nsurlconnection-class-with-tag/ http://blog.emmerinc.be/index.php/2009/03/02/custom-nsurlconnection-class-with-tag/
http://blog.emmerinc.be/index.php/2009/03/15/multiple-async-nsurlconnections-example/ http://blog.emmerinc.be/index.php/2009/03/15/multiple-async-nsurlconnections-example/
基本上,他只是添加了一个tag
现有 NSURLConnection 的属性:
自定义URLConnection.m
- (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate startImmediately:(BOOL)startImmediately tag:(NSString*)tag {
self = [super initWithRequest:request delegate:delegate startImmediately:startImmediately];
if (self) {
self.tag = tag;
}
return self;
}
然后,稍后在正常的 NSURLConnection 加载方法中,您可以执行以下操作:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Log the connection’s tag
CustomURLConnection *ttttag = (CustomURLConnection *)connection; // **HERE**
NSLog(@”%@”, ttttag.tag);
NSMutableData *dataForConnection = [self dataForConnection:(CustomURLConnection*)connection];
[connection release];
}
所以,这就是我遇到麻烦的地方。在我看来,事情是这样的:
- 我创建了一个“连接+标签”
- 我上面发布的第一个代码片段创建了一个常规的“连接”(没有
tag
),最终会调用普通的 NSURLConnection 方法,例如connectionDidFinishLoading
。会发生什么tag
在此刻?
- In the
connectionDidFinishLoading
方法我能够将连接转换回“连接+标签”,然后找到已被丢弃的丢失标签信息。如何?
也许我只是让自己感到困惑,但似乎tag
正常启动时被丢弃NSURLConnection
小路。但然后通过将其转换为子类,我再次能够恢复tag
财产。同时它住在/去哪里?
对继承有更好了解的人可以向我解释一下吗?