2011-12-19 2 views
0

방금 ​​NSOperationQueue를 사용하여 다운로드 대기열을 관리하도록 내 응용 프로그램을 전환했습니다. 둘 다 NSURLDownloads를 시작하고 NSOperation 하위 클래스 내에서 모든 대리자 콜백을 처리합니다. 그러나 방금 테스트 할 때 위임 메서드 중 아무 것도 호출되지 않는 것으로 나타났습니다. NSURLDownload 클래스 (NSURLDownload 클래스 참조 참조) : NSURLDownload 클래스 참조는 다음과 같이 말합니다.다운로드가 NSOperation에서 시작될 때 NSURLDownloadDelegate가 호출되지 않습니다.

"이 대리자 메서드는에서 호출됩니다. 연결된 NSURLDownload 개체에 대한 비동기로드 작업을 시작한 스레드. "

이것은 제가 버그가 적어도 라이온스에서 수정 되었어야한다고 생각합니다. 그러나 나는 10.7.2를 돌리고 있는데, NSURLDownload는 확실히 나를 위해 올바르게 행동하지 않는다. 내가 여기서 누락 된 것이 있습니까? 헤더 파일에 델리게이트 메서드를 선언하지 않았지만 그건 중요하지 않습니다 ... 그렇 습니까?

는 (나는 내가있는 NSURLConnection이. 그러나, 나는 정말 NSURLDownload의 다운로드 진행의 기능을 사용할 수 있도록 바라고 사용에 대한 대안이 될 것이라고 알고 있습니다.)

내 NSOperation 하위 클래스가 설정 한 동시에 실행 : 메인 대신 오버라이드 된 시작을 사용했습니다. 이 날 줄 수있는 모든 도움을 사전에

감사합니다,

P.S. 나는 더 많은 사람들이 그것을 볼 수 있기를 희망하면서 애플 개발자 포럼에도 이것을 올리고있다.

답변

0

NSURLDownload는 콜백을 제공하기 위해 NSRunLoop에 등록합니다. 각 runloop은 특정 스레드에 연결됩니다. NSOperation에서는 NSURLDownload를 설정합니다. NSURLDownload는 작업이 실행되는 모든 스레드에 대한 runloop에 등록됩니다 (이는 결정적이지 않습니다). 그러나 -start 또는 -main 메소드를 종료하면 스레드 (및 실행 루프)가 손상 될 수 있습니다.

비슷한 문제는 http://developer.apple.com/library/ios/#qa/qa1712/_index.html을 참조하십시오.

관련 문제