【问题标题】:ASINetworkQueue setQueueDidFinishSelector selector ending prematurely ?ASINetworkQueue setQueueDidFinishSelector 选择器过早结束?
【发布时间】:2011-08-18 10:01:11
【问题描述】:

我刚刚开始测试我构建的一些上传实用程序并放置了 47 个项目进行上传,但队列在第 15、18 或 21 个项目随机停止,不知道确切原因,但选择器被调用得太早虽然不是所有的请求都结束了。

我做的唯一一件特别的事情是将最大并发请求数提高到 6 而不是 4 ,但是 这似乎不是一个大问题。

我正在按如下方式配置我的选择器:

[self.uploadQueue setDelegate: self];
[self.uploadQueue cancelAllOperations];
[self.uploadQueue setRequestDidStartSelector: @selector(uploadRequestStarted:)];
[self.uploadQueue setRequestDidFinishSelector:@selector(uploadRequestEnded:)];
[self.uploadQueue setQueueDidFinishSelector:@selector(uploadQueueEnded:)];
[self.uploadQueue setDownloadProgressDelegate: myProgress];
[self.uploadQueue showAccurateProgress];

这是我的日志:

2011-08-18 12:39:03.916 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView startUpload] Num requests: 47
2011-08-18 12:39:08.987 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #3 successfully!
2011-08-18 12:39:09.036 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #2 successfully!
2011-08-18 12:39:09.911 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #0 successfully!
2011-08-18 12:39:09.913 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #5 successfully!
2011-08-18 12:39:10.011 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #4 successfully!
2011-08-18 12:39:12.691 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #6 successfully!
2011-08-18 12:39:13.588 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #9 successfully!
2011-08-18 12:39:14.205 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #8 successfully!
2011-08-18 12:39:14.229 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #10 successfully!
2011-08-18 12:39:15.739 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #11 successfully!
2011-08-18 12:39:17.278 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #12 successfully!
2011-08-18 12:39:17.894 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #13 successfully!
2011-08-18 12:39:18.815 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #15 successfully!
2011-08-18 12:39:18.986 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadRequestEnded:] Finished uploading photo #14 successfully!
2011-08-18 12:39:19.191 MyTestApp[4240/0xacc992c0] [lvl=2] -[MyView uploadQueueEnded:] queue ended?

很想听听你们的任何建议:) 提前致谢, 谢。

【问题讨论】:

    标签: iphone queue asihttprequest nsoperationqueue


    【解决方案1】:

    您是否尝试将 setShouldCancelAllRequestsOnFailure: 设置为 NO ?如果任何单个请求失败,队列的默认行为是取消所有剩余的请求。

    可能是请求失败(出于某种原因)导致您的队列提前完成。

    【讨论】:

    • 是的,我正要发布这个。还添加一个带有一些调试的 requestFailed 选择器,以便您了解是否/为什么会失败!
    • 嘿,谢谢,这确实解决了!我得到的是 Error Domain=ASIHTTPRequestErrorDomain Code=2 "The request timed out" UserInfo=0x60ed4a0 {NSLocalizedDescription=The request timed out} 超时时间设置在哪里? ...也许我应该让它更长一点以防万一?
    • 通过设置[request setNumberOfTimesToRetryOnTimeout: 2]解决了;非常感谢! :)
    • + (void)setDefaultTimeOutSeconds:(NSTimeInterval)newTimeOutSeconds; - 这是一个类方法,所以在创建任何实例之前设置它。默认值为 10 秒。
    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2015-01-08
    • 2011-08-19
    相关资源
    最近更新 更多