2012-03-07 17 views
3

私はGETリクエストをサーバーに送信する機能を持っています。それはうまく動作しますが、何らかの理由で2回呼び出されます。ボタンを押すと機能を呼び出す。iOS HTTPリクエストが2回呼び出されました

これは、関数のコードです:

-(void) GETasync: (NSString *) path{ 
    receivedData = [[NSMutableData alloc] init]; 
    NSURLRequest *request=[NSURLRequest requestWithURL: 
           [NSURL URLWithString: path] 
           cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
           timeoutInterval:60.0]; 
    NSHTTPURLResponse * response; 
    NSError * error; 
    NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    NSLog(@"data received"); 
} 

だから私は出力に表示さ:

2012-03-07 16:36:41.509 KW2[24136:bf03] data received 
2012-03-07 16:36:41.694 KW2[24136:bf03] data received 

私もPOSTリクエストのための機能を持っており、それはそれで同じ悩みです。

+0

このメソッドを呼び出した場所のコードを表示できますか? –

+0

どのようにボタンをそのメソッドに接続しましたか? –

+0

問題は接続POSTとは関係ありません。あなたのボタンイベントは一度もっと多く呼ばれています。どのようにあなたのボタンのイベントをassingingですか? –

答えて

0

問題は、私はIBのボタンにFile'OwnerFirst ResponderからIBOutletsを有線だけのことでした。

File's Ownerからワイヤを除去した後、本方法は、一度だけ呼び出されるようになりました。

0

私はあなたのデリゲートメソッドconnection:didReceiveData:内そのログをプリントアウトしていることを想定しています。このメソッドは、1つの接続に対して複数回呼び出すことができます。実際、少なくとも2回呼び出されます。ドキュメントから

デリゲートが定期的に送信される接続:didReceiveData:データのようなメッセージが受信されます。デリゲートの実装は、新しく受信したデータの格納を担当します。

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    // Append the new data to receivedData. 
    // receivedData is an instance variable declared elsewhere. 
    [receivedData appendData:data]; 
} 

編集:私はあなたの最新の編集中にあなたがいることを追加したことを確認した情報をログに記録する(または多分私はすぐにそれを見ていない - 恥を私に)。

おそらく、そのメソッドを通知ハンドラで呼び出すのですか?もしそうなら、その通知のために二重登録してもかまいません - >それであなたのハンドラは2回呼び出されます。

0

Interface BuilderでボタンのIBAction接続を確認してください。 IBでボタンをコピー&ペーストすると、ボタンに2つ以上の同一のIBAction接続が残ることになり、1回のボタンクリックで2回実行されます。