我使用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。
答案 0 :(得分:4)
您需要设置各个请求的委托而不是队列。
基本上,如果在队列上设置didFinish和didFail选择器,则会调用队列的委托。如果在请求中设置它们,则会调用请求的委托(您也可以同时执行这两种操作,在这种情况下都会调用它们)。
在您的情况下,您希望对两个请求使用相同的委托,但是对于didFail / didFinish使用不同的选择器,我可以看到,如果您没有为其设置委托,则调用队列的委托是有意义的请求。也许我应该添加这个...... :)
本