Asihttprequest : 네트워크 대기열 내의 여러 요청으로부터 대의원을받습니다.
-
20-08-2019 - |
문제
Asinetworkqueue를 사용하여 대기열에있는 두 가지 요청을 보냅니다. 내 문제는 요청이 실패/완료되면 알림을받을 수 없다는 것입니다.
암호:
[networkQueue cancelAllOperations];
[networkQueue setShowAccurateProgress:YES];
[networkQueue setUploadProgressDelegate:self.progressIndicator];
[networkQueue setDelegate:self];
[networkQueue setQueueDidFinishSelector:@selector(queueDidFinish)];
NSURL *urlAttachment = [NSURL URLWithString:@"http://localhost/test1.xml"]];
ASIFormDataRequest *requestFile = [[[ASIFormDataRequest alloc] initWithURL:urlAttachment] autorelease];
[requestFile setFile:filePath forKey:@"attachment[test]"];
[requestFile setDidFailSelector:@selector(test1WentWrong)];
[requestFile setDidFinishSelector:@selector(test1Done)];
[networkQueue addOperation:requestFile]; //queue is an NSOperationQueue
NSURL *url = [NSURL URLWithString:@"http://localhost/test2.xml"]];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:test.filename forKey:@"filename[test]" ];
[request setDidFailSelector:@selector(test2WentWrong)];
[request setDidFinishSelector:@selector(test2Done)];
[networkQueue addOperation:request]; //queue is an NSOperationQueue
[networkQueue go];
test1wentwrong, test1done, test2wentwrong, test2done은 호출되지 않습니다.요청이 잘 실행되고 QueuedidFinish가 호출됩니다.
해결책
대기열이 아닌 개별 요청의 대의원을 설정해야합니다.
기본적으로 대기열에서 didfinish 및 didfail selectors를 설정하면 대기열의 대의원이 호출됩니다. 요청에 따라 설정하면 요청의 대의원이 호출됩니다 (두 가지 모두를 수행 할 수도 있습니다.
귀하의 경우, 두 요청에 동일한 대의원을 사용하려는 경우, DidFail / DidFinish의 다른 선택기를 사용하려면 요청에 대한 대의원을 설정하지 않은 경우 큐 대의원이 호출되는 것이 합리적 일 것입니다. 아마도 나는 이것을 추가해야한다 ... :)
벤
제휴하지 않습니다 StackOverflow