2013-01-14 2 views
2

NSOperationQueue에서 작업을 시작/실행하려고하는지 여부를 알 수있는 방법이 있습니까? 나는 NSURLConnection'ssetDelegateQueue:을 사용하고 있는데 언제 발화되는지 알고 싶습니다.작업을 시작하기 전에 NSOperationQueue 콜백?

+0

NSURLConnection에 대리자를 설정할 수 있습니까? –

+0

예, 연결하기 전에 호출되는 NSURLConnection에서 대리자 메서드를 보지 못했습니다. 내가 찾은 가장 초기의 것은 응답이 수신 된 때입니다. – 0xSina

답변

0

NSOperation 하위 클래스에서 willStartBlock에 대한 copy 속성을 추가하십시오. 메인의 시작 부분 - 다른 액션보다 먼저 -이 블록이 설정되면 이것을 호출하십시오.

이렇게하면 조작을 작성하고 조작 대기열에 넣기 전에 조작이 시작될 때 수행 할 조치를 설정할 수 있습니다.

특정 질문의 문제는 큐에 생성 된 작업을 만들지 않는다는 것입니다. NSOperationQueue를 서브 클래스 화해, 3 개의 public addOperation * 메소드를 오버라이드 (override) 할 수 있습니다. 운이 좋으면 NSURLConnection이 콜백 작업을 큐에 추가하는 데 사용됩니다.

+0

NSOperation 하위 클래스가 없습니다. – 0xSina

+0

내 대답 모두 읽으십시오. 서브 클래스 NSOperationQueue. – Cocoanetics

0

정확히 무엇을하고 싶은지 알 수 있습니다.

나는 당신이 당신의 질문에서 명확하지 않다으로 달성하고자하는 것을 확실하지 오전하지만 당신은 그런 식으로 뭔가를 할 수 있습니다

currentConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; 
if (self.operationQueue) { 
    [currentConnection setDelegateQueue:self.operationQueue]; 
}   
[currentConnection start]; 

있는 NSURLConnection이 메소드가 호출되는 시작하면 호출됩니다. NSOperation을 서브 클래스 화하고 시작 메소드를 재정의 할 수도 있습니다.

관련 문제