2012-03-07 3 views
3

서버에 GET 요청을하는 기능이 있습니다. 그것은 잘 작동하지만 어떤 이유로 그것은 두 번 호출됩니다. 버튼을 누를 때 함수를 호출합니다.iOS HTTP 요청이 두 번 호출되었습니다.

-(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 연결과 관련이 없습니다. 버튼 이벤트가 한 번 더 많이 호출됩니다. 어떻게하면 버튼에 이벤트를 집어 넣고 있습니까? –

답변

0

IBOutlets를 File'OwnerFirst Responder에서 IB의 단추에 연결한다는 점에서 문제가있었습니다.

File's Owner에서 전선을 제거한 후 메서드가 한 번만 호출되기 시작했습니다.

0

위의 로그를 위임 방법 connection:didReceiveData:에 인쇄한다고 가정합니다. 이 메서드는 하나의 단일 연결에 대해 여러 번 호출 할 수 있습니다. 실제로이 메서드는 일반적으로 적어도 두 번 호출됩니다. 문서에서

:

대리인이 주기적으로 전송되는 연결 : didReceiveData : 데이터와 메시지가 수신됩니다. 델리게이트 구현은 새로 수신 된 데이터를 저장하는 역할을합니다.

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

편집 : 나는 당신의 최신 수정 사항이 있음을 추가 한 것을 볼 수 로깅 정보 (또는 어쩌면 내가 바로 보지 않았다 - 수치를 나에게).

아마도 알림 핸들러로 해당 메소드를 호출하고 있습니까? 그렇다면, 그 통지에 대해 이중 등록을하십시오.> 따라서 핸들러가 두 번 호출됩니다.

0

또한 Interface Builder에서 버튼에 대한 IBAction 연결을 확인하십시오. IB에서 버튼을 복사하여 붙여 넣으면 버튼에 대해 두 개 이상의 동일한 IBAction 연결이 끊어 질 수 있습니다.이 경우 버튼 하나만 클릭하면 메서드가 두 번 실행됩니다.