2013-05-06 72 views
5

我有两个请求,一个接一个地开始。像这样的起始请求区分委托中的NSURLConnection对象

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com"]]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; 
NSURLConnection * connection = [[NSURLConnection alloc] 
           initWithRequest:request 
           delegate:self startImmediately:NO]; 
[connection scheduleInRunLoop:[NSRunLoop mainRunLoop] 
         forMode:NSDefaultRunLoopMode]; 
[connection start]; 

和另一个请求开始像这样。

NSURL *url1 = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.apple.com"]]; 
NSURLRequest *request1 = [NSURLRequest requestWithURL:url1 cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; 
NSURLConnection *connection1 = [[NSURLConnection alloc] initWithRequest:request1 delegate:self]; 
[connection1 release]; 

我如何区分这两个委托方法?

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{} 

不想为此保留任何额外的类变量。

+0

检查回调方法中的'connection'参数是否等于代码中的'connection'或'connection1'变量。 – Markus 2013-05-06 07:17:08

回答

4

很简单:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    if (connection == connection1) 
    { 
     //It's for connection1. 
    } 
    else if (connection == connection2) 
    { 
     //It's for connection2. 
    } 
} 

你可以通过这个美丽的SO问题:Managing multiple asynchronous NSURLConnection connections

+0

在这种情况下,我必须保留两个类变量Connection1和Connection 2,因为两个连接可能同时工作。我试图避免这些额外的变量。 – NaXir 2013-05-06 07:26:09

+0

在这种情况下,我可以问你为什么使用这种老方法? – Bhavin 2013-05-06 07:29:35

+0

我发现很容易做到。请分享一下新的方法吗? – NaXir 2013-05-06 07:35:55

2

把你NSURLConnection对象的.h文件,并在您的委托方法检查为马库斯建议。

子类的NSURLConnection,然后你可以tag属性添加到连接类,同时创造,在您委托方法检查相应的标记。你可以找到working tutorial here

相关问题