我正在尝试解压缩通过URL下载的文件。下载的文件是zip格式。我使用过库:iPhone Unzip code,它有SSZipArchive库。它在当前代码中用于在下载后解压缩文件。但是,当我将应用程序作为独立应用程序运行时,通过提供日志错误来崩溃:example.app无法及时启动。我不确定我是否可以使用这个库,或者是否有任何其他库已经过试用,测试并在设备上运行。
- (void)viewDidLoad {
[super viewDidLoad];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *directoryPath = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/ZipFiles.zip", directoryPath];
NSString* updateURL = @"http://www.example.com/test.php?id=11";
NSData* updateData = [NSData dataWithContentsOfURL: [NSURL URLWithString: updateURL] ];
[fileManager createFileAtPath:filePath contents:updateData attributes:nil];
/* SSZipArchive is a free API built on ZipArchive to unzip the files. Header file is passed in this class.*/
[SSZipArchive unzipFileAtPath:filePath toDestination:directoryPath];
NSLog(@"Finished unzipping database");
}
答案 0 :(得分:0)
正在从应用程序的主线程调用viewDidLoad方法,并且由于下载和解压缩操作花费了大量时间,因此它冻结了主线程。这就是您看到错误的原因。
您需要将长时间运行的操作移动到后台线程,以便主线程可以自由地完成加载应用程序。有很多方法可以做到这一点,我更喜欢使用块。
我建议您阅读文档中的“并发编程指南”: