2013-05-06 3 views
5

2つの要求が順番に開始されます。このような要求を開始デリゲート内の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]; 

どのように私はこれらの2つをデリゲートメソッドで区別できますか?

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

この目的のために余分なクラス変数を保持したくないです。

+0

コールバックメソッドの 'connection'引数がコードの' connection'または 'connection1'変数と等しいかどうかを確認してください。 – Markus

答えて

4

それは簡単です:あなたはこの美しいSO質問を通過することができます

-(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

その場合、両方の接続が同時に動作している可能性があるので、2つのクラス変数Connection1とConnection 2を保持する必要があります。そして私はこれらの余分な変数を避けようとしています。 – NaXir

+0

その場合、なぜこの古いアプローチを使用しているのですか? – Bhavin

+0

私はそれが簡単だとわかりました。あなたは新しいアプローチを共有していただけますか? – NaXir

2

は.hファイルであなたのNSURLConnectionオブジェクトを取り、あなたのデリゲートメソッドで確認してください。

または

サブクラスあなたNSURLConnectionと作成中にメソッドが適切なタグをチェック委任するに、あなたは、接続クラスにtagプロパティを追加することができます。 working tutorial hereが見つかります。