1

我正在使用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... 

    });
];
4

1 回答 1

0

如果发生错误,您可以“返回”。

于 2012-11-20T18:30:21.650 回答