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 に答える