如何在iOS中解压缩异步方式zip文件?

时间:2014-12-18 15:42:12

标签: ios objective-c ios7 ios8

如何异步解压缩文件?目前我正在解压缩:

[SSZipArchive unzipFileAtPath:strZipFile toDestination:strDestPath];

但是这阻止了我的主线程并且UI没有响应超过10秒。 zip文件超过50MB,我在didFinishLaunching的委托中开始下载(以避免长时间闪屏,因为并不总是需要在开头使用该文件。)

1 个答案:

答案 0 :(得分:8)

使用GCD在后台线程中运行它:

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [SSZipArchive unzipFileAtPath:strZipFile toDestination:strDestPath];
 });

您可能希望通过在主线程中的某个位置调用方法来告诉您的应用已完成解压缩:

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [SSZipArchive unzipFileAtPath:strZipFile toDestination:strDestPath];
    dispatch_async(dispatch_get_main_queue(), ^{
        [someClass finishedUnzippingFile:strDestPath];
    });
 });