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

Posted

技术标签:

【中文标题】如何在iOS中解压缩异步方式的zip文件?【英文标题】:How to unzip asynchronous way zip file in iOS? 【发布时间】:2014-12-18 15:42:12 【问题描述】:

如何异步解压文件?目前我是这样解压的:

[SSZipArchive unzipFileAtPath:strZipFile toDestination:strDestPath];

但这会阻塞我的主线程,并且 UI 无响应超过 10 秒。 zip 文件超过 50MB,我在 didFinishLaunching 上的委托中开始下载(以避免长时间的启动屏幕,因为并不总是需要在开始时拥有该文件。)

【问题讨论】:

如果你在另一个线程中执行,一切都是异步的 【参考方案1】:

使用 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];
    );
 );

【讨论】:

以上是关于如何在iOS中解压缩异步方式的zip文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中解压缩多层 zip 文件

如何在 HDFS 中解压缩多个 zip 文件

如何在php中解压缩zip文件[重复]

使用 ZipFile 类从多个文件的 zip 存档中解压缩文件

xml 在java中解压缩一个zip文件。

从 zip 文件中解压缩选定的文件