그래서 DB 저장시 경쟁 조건이 발생하는 ASINetworkQueues 그룹이 있습니다. NSOperationQueue를 만들려고합니다.이 NSOperationQueue는 이러한 각각의 "대기열"을 대기열에 넣습니다. 현재 NSOperation을 메인 메소드와 함께 작성하여 "서브 대기열"에서 다운로드를 시작합니다.ios NSOperationQueue, 추가 할 때 작업이 모두 실행되고 대기열에 대기하지 않습니다.
제 문제는 "addOperation"을 사용하여 메인 큐에 서브 큐를 추가 할 때마다 "메인"메소드가 즉시 실행되어 서브 큐가 동시에 실행된다는 것입니다. 나는 주요한 방법이 한 번에 하나씩 해고되었다는 인상을 받았다. 즉 대기열의 최상위에서의 동작에 대해서만.
아마도 여기에 뭔가 빠져 있는데 어쩌면 첫 번째 작업이 완료 될 때까지 다른 작업을 중지하는 방법을 찾지 못하는 것 같습니다. 또한 NSUperation에 대해 isReady = 0이되는 상황에 프로그램을 추가하는 것조차 보이지 않습니다. 항상 그렇습니다.
참고 : 여기
는 일부 코드의 I 1.NSOperation 주요 방법에 NSOperation 큐 maxConcurrentOperations을 설정 한 :
ChapterDownloadOperation *cdo = [[ChapterDownloadOperation alloc] init];
cdo.chapter = ch;
[chapterDownloadQueue addOperation:cdo];
[cdo release];
:
-(void)main {
[subQueue download];
}
는 큐 설정
여러 작업을 추가하는 경우 main 메서드가 instan에서 실행됩니다. 큐에 추가된다. 그 작동이 흔들릴 준비가되었을 때 무시하고 사용해야하는 또 다른 기능이 있습니까? 주요 방법은 작업을 설정하는 것입니다.
어떤 아이디어라도 높이 평가합니다.
고마워요.
당신이 대기열에서 작업의 배열을 얻어서 작업에 종속성을 추가 한 의미합니까 매우 유용하다는 것을 발견했다? 종속성이 제대로 작동하려면 대기열에 추가하기 전에 각 작업에 종속성을 추가해야합니다. –
그러나 버튼 클릭시 작업이 생성되어 대기열에 추가됩니다. 첫 번째 작업을 다른 버튼을 탭하기 전에 먼저 대기열에 추가 할 때 첫 번째 작업을 두 번째 종속 항목으로 추가하려면 어떻게해야합니까? 아이디어가 있으십니까? – conor
흠, 그런 경우에는 작업 대기열 대신 직렬 작업 대기열을 사용하는 방법을 고려해야합니다. 직렬 디스패치 큐는 한 번에 하나씩 순서대로 실행됩니다. 직렬 큐에는 [동시성 프로그래밍 가이드] (http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues)에 유용한 정보가 많이 있습니다.html # // apple_ref/doc/uid/TP40008091-CH102-SW1) –