- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NSOperation
来收集应该下载的数据(需要 2-5 秒),然后我下载它。我在这个 NSOperation 中放置了一个 ASINetworkQueue 以开始下载之前收集的数据。
一切正常,但是当我在我的 ASINetworkQueue
上调用 cancelAllOperations
时,主线程阻塞并且 UI 卡住。为什么会这样?其他一切正常。
这是我的代码:
- (void)main {
//ManagedObjectContext for operations
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = [[NSManagedObjectContext alloc] init];
[self.managedObjectContext setPersistentStoreCoordinator: [appDelegate persistentStoreCoordinator]];
// Register context with the notification center
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:self.managedObjectContext];
[self startDownload];
if (!self.downloadDidFail) {
[self moveFiles];
[self.managedObjectContext save:nil];
}
}
- (void)startDownload {
self.downloadQueue = [ASINetworkQueue queue];
self.downloadQueue.delegate = self;
[self.downloadQueue setRequestDidFailSelector:@selector(dataRequestFailed:)];
[self.downloadQueue setRequestDidFinishSelector:@selector(dataRequestFinished:)];
[self.downloadQueue setQueueDidFinishSelector:@selector(dataQueueFinished:)];
[self.downloadQueue setShouldCancelAllRequestsOnFailure:YES];
[self.downloadQueue setDownloadProgressDelegate:self.progressView];
for (File *dataFile in self.dataFiles) {
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:dataFile.url]];
[request setDownloadDestinationPath:dataFile.path];
[self.downloadQueue addOperation:request];
}
}
[self.downloadQueue go];
[self.downloadQueue waitUntilAllOperationsAreFinished];
}
- (void)dataRequestFinished:(ASIHTTPRequest *)request {
NSLog(@"DL finished");
}
- (void)dataRequestFailed:(ASIHTTPRequest *)request {
DLog(@"Download failed");
self.downloadDidFail = YES;
}
- (void)dataQueueFinished:(ASINetworkQueue *)queue {
DLog(@"Finished Data Queue");
}
- (void)cancelDownload {
self.canceledDownload = YES;
[self.downloadQueue cancelAllOperations];
}
最佳答案
我遇到了同样的问题,通过调用解决了:
[queue setShouldCancelAllRequestsOnFailure:NO]
调用前:
[queue cancelAllOperations].
关于objective-c - NSOperation 中的 ASINetworkQueue 阻塞主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559995/
我正在使用 ASINetworkQueue 在 iPad 应用程序中下载大约 50 个文件。我正在寻找一种允许用户暂停和恢复队列的方法。 ASIHTTP 文档引用 [request setAllowR
我刚刚开始测试我构建的一些上传实用程序,并放置了 47 个项目进行上传,但队列在第 15、18 或 21 个项目处随机停止,不确定具体原因,但选择器被调用得太早虽然并不是所有的请求都结束了。 我所做的
这是我用来取消下载的代码。 NSArray *queueArray = [downloadQueue operations]; for (ASIHTTPRequest *reques
我想在 NSOperation 中使用 ASINetworkQueue。这很好用,没有问题。失败的是保存核心数据。我为这个操作设置了一个新的 NSManagedObjectContext,就像文档中所
我正在使用 ASIHTTPRequest在 iPhone 应用程序在后台运行时下载多个文件。我想在队列结束时显示一个 UILocalNotification。在应用程序恢复之前不会调用以下委托(del
我有 ASINetworkQueue,其中有超过 1500 个请求。执行如此数量的请求需要一段时间。如果用户在该队列运行时离开 View Controller ,操作系统会取消分配 View Cont
我正在使用 NSOperation 来收集应该下载的数据(需要 2-5 秒),然后我下载它。我在这个 NSOperation 中放置了一个 ASINetworkQueue 以开始下载之前收集的数据。
在我的 iPhone/iPad 应用程序中,我通过“APIManager”(单例,在 AppDelegate 中创建)处理所有网络和 Web API 请求。 目前,APIManager 仅包含一个 A
我正在开发一个项目,需要按顺序下载数据并附加所有数据。为了解决这个问题,我决定使用队列(NSOperationsQueue 或 ASINetworkQueue)。不幸的是,顺序颠倒了,因为 ASINe
我有以下类(class): File_Downloadmanager.h: #import "ASINetworkQueue.h" @interface File_Downloadmanager :
我正在解决一个问题,我必须在一个队列中下载大约 10 个不同的大文件,并且我需要显示一个进度条来指示总传输的状态。我在 iOS4 中与 ASIHTTPRequest 一起工作得很好,但我正在尝试过渡到
摘要:我想使用表格 View 单元格内的进度条跟踪文件下载的进度。 我在 ASINetworkQueue 中使用 ASIHTTPRequest 来处理下载。 它可以工作,但进度条保持在 0%,并且在每
我是一名优秀的程序员,十分优秀!