当前位置:  开发笔记 > 编程语言 > 正文

Objective-C中有多个NSURLConnection委托

如何解决《Objective-C中有多个NSURLConnection委托》经验,为你挑选了2个好方法。

我有两个NSURLConnections.第二个取决于第一个的内容,因此处理从连接接收的数据对于两个连接将是不同的.

我只是拿起Objective-C,我想知道实现委托的正确方法是什么.

现在我正在使用:

NSURL *url=[NSURL URLWithString:feedURL];
NSURLRequest *urlR=[[[NSURLRequest alloc] initWithURL:url] autorelease];
NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:urlR delegate:self];

我不想使用self作为委托,如何使用不同的委托定义两个连接?

NSURLConnection *c1 = [[NSURLConnection alloc] initWithRequest:url delegate:handle1];
NSURLConnection *c2 = [[NSURLConnection alloc] initWithRequest:url delegate:handle2];

我如何创建handle1和handle2作为实现?还是接口?我真的不明白你会怎么做.

任何帮助都是极好的.

谢谢,Brian Gianforcaro



1> Brian Gianfo..:

Ben,虽然您的信息很有用但它没有完全回答我问的问题.

我终于想出了如何设置我自己的代表,这就是我真正要求的.

我是这样实现的:

@interface DownloadDelegate : NSObject 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
@end

@implementation DownloadDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
}
@end

我们像这样使用委托:

DownloadDelegate *dd = [DownloadDelegate alloc];
NSURLConnection *c2 = [[NSURLConnection alloc] initWithRequest:url delegate:dd];

希望能帮助任何人处于同一位置,并再次感谢Ben的帮助.

谢谢,

Brian Gianforcaro


很好的答案.正是我在寻找什么.感谢您花时间回答您自己的问题

2> shein..:

我认为以一种干净的方式处理多个连接的最好方法是保留一个委托,并用标记识别每个NSURLConnection(这是一个非常简单的子类,你可以从http://www.isignmeout.com阅读和复制/ multiple-nsurlconnections-viewcontroller / )

基本上,使用标识标记初始化每个NSURLConnection,然后您可以在委托中拉出该标记,并根据您需要的逻辑使用Switch-Case处理它.

UPDATE

我已将子类NSURLConnection转换为一个简单的类别 - 更简单,更简洁

https://github.com/Shein/Categories

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有