2010-12-15 2 views
0

..이일정 기간 후 대리자 메서드를 트리거하는 방법? 내가 비동기 적으로 파일을 다운로드하는 클래스를 사용하고

// in AViewController.m 
DataGetter *blueFile = [[DataGetter alloc] init]; 
blueFile.delegate = self; 
[blueFile getData:@"http://example.com/blue-file"]; 

같은 비트 그것은 파일에 물건을 수행하는 위임 방법은 한 번이 확인을 작동

- (void) dataGetterFinished:(DataGetter *)dataGetter 
{ 
// code 
} 

을 다운로드 한 작동 이상적인 조건이지만 모바일 장치를 다루므로 연결이 항상 신뢰할만한 것은 아닙니다. 연결이 반쯤 끊어 지거나 사용이 느리게 느려질 수 있습니다.

그래서 어떻게 오류를 표시하고 작업을 중지하는 10 초 후 트리거 대리자 메서드를 설정할 것이라고 궁금하네요. NSTimer 또는 NSNotification 또는 일부 조합을 사용해야합니까?

+0

http://allseeing-i.com/ASIHTTPRequest/와 같은 라이브러리 사용에 대해 생각해 보셨습니까? 거기에 시간 초과, 자동 재시도, 네트워크 장애시 캐싱 된 객체 사용 등을 설정할 수 있습니다. – Bastian

+0

너무 멀리이 특정 애플 리케이션에 도로,하지만 난 아마도 미래의 애플 리케이션에서 모든보고 아이 클래스를 사용합니다 – cannyboy

+0

시간 초과 10 초 모바일 장치에 권장되는 뭔가가 아닙니다. 셀룰러 네트워크를 통한 연결을 설정하는 데 더 오래 걸릴 수 있습니다. 대신에 NSURLConnection과 같은 URL 로딩 시스템 클래스가 제공하는 정상적인 타임 아웃을 신뢰해야합니다. – PeyloW

답변

1

퀸 "에스키모!" 애플은 WWDC 2010이 세션 (207) 및 (208)에서 아이폰을위한 네트워크 프로그래밍에 두 회담을 한에서, 당신은 여기를 다운로드 할 수 있습니다 http://developer.apple.com/videos/wwdc/2010/

네트워크의 성공을위한 간단한 recepie은 다음과 같습니다

  1. 사용 NSURLConnection 비동기.
  2. 아니요은 타이머 나 다른 방법을 사용하여 수동 시간 제한을 설정합니다. 기본값은 정상입니다.
  3. 대신 connection:didFailWithError:을 처리 할 준비가되어 있으며 시간 초과로 전송됩니다.
  4. 예를 들어 사용자 작업에 대한 응답으로 -[NSURLConnection cancel]을 사용하여 수동으로 연결을 취소 할 수 있습니다.
관련 문제