我正在使用AFHTTPRequestOperation
来自很棒的AFNetworking下载文件。
我正在下载大型 zip 文件,下载完成后需要解压缩。但是由于AFHTTPRequestOperation
' 的完成块发生在主线程上,并且这些文件相对较大,我需要在后台线程上解压缩,这是我用 GCD 实现的。
但是在这个后台线程中解压可能会出错,如果是这种情况,我需要能够阻止线程继续......有没有办法用 GCD 来做,或者我必须把所有东西都放在声明if
?
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *theOperation, id responseObject){
NSLog(@"*** TP DOWNLOADER: Finished downloading");
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
//Unzip the file:
ZipArchive *za = [[ZipArchive alloc] init];
BOOL unzipOpenFileSuccessful = [za UnzipOpenFile:operation.targetPath Password:@"thepassword"];
if(!unzipOpenFileSuccessful){
NSLog(@"Problems unzipping!");
//should return here and not keep doing work!
}
//keep doing work...
});
];