2013-05-06 2 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'argument в методе обратного вызова переменным' connection' или 'connection1' в вашем коде. – Markus

ответ

4

Это просто:

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

Вы можете пройти через этот красивый С.О. Вопрос: Managing multiple asynchronous NSURLConnection connections

+0

В этом случае я должен сохранить две переменные класса Connection1 и Connection 2, так как оба соединения могут работать одновременно. И я стараюсь избегать этих дополнительных переменных. – NaXir

+0

В таком случае я могу спросить вас, почему вы используете этот старый подход? – Bhavin

+0

Мне было легко сделать это. Поделитесь ли вы новым подходом? – NaXir

2

ваши NSURLConnection объекты в файле .h и проверить в методе делегата, как Маркус предложил.

или

Подкласс ваш NSURLConnection, а затем вы можете добавить tag свойства к классу соединений при создании, в делегировании методы проверки для соответствующего тега. Вы можете найти working tutorial here.

Смежные вопросы