gpt4 book ai didi

ios - (NSURLSessionDownloadTask cancelByProducingResumeData) 崩溃 nsnetwork 守护进程 iOS 7.0

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:21:30 26 4
gpt4 key购买 nike

在我的应用程序中,用户可以随时取消下载。我通过调用 [task cancelByProducingResumeData: 取消下载。它在大多数情况下工作正常,但是,如果下载任务在启动/恢复后立即取消,它会使 nsnetwork 守护程序崩溃。这是导致守护程序在 iOS 7.0 上 100% 崩溃的示例代码。这个问题不会发生在 iOS 7.1 上!

NSURLSession *ses = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration backgroundSessionConfiguration:@"aaa"] delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *dTask = [ses downloadTaskWithRequest:request];
[dTask resume];

[ses getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
NSLog(@"%@", downloadTasks);
if (downloadTasks.count>0)
{
for (NSURLSessionDownloadTask *task in downloadTasks)
{
NSLog(@"cancelling : %@", task);
[task cancelByProducingResumeData:^(NSData *resumeData) {
NSLog(@"Cancelled");
}];
}
}
}];

这是崩溃日志:

Aug 13 16:15:06 Dev-iPhone backgroundTesting[4848] <Warning>: (
"<__NSCFBackgroundDownloadTask: 0x1659cf80>"
)
Aug 13 16:15:06 Dev-iPhone backgroundTesting[4848] <Warning>: cancelling : <__NSCFBackgroundDownloadTask: 0x1659cf80>
Aug 13 16:15:06 Dev-iPhone nsnetworkd[4827] <Error>: Property list invalid for format: 100 (property lists cannot contain NULL)
Aug 13 16:15:06 Dev-iPhone nsnetworkd[4827] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: NSURLSessionDownloadTaskResumeData)'
*** First throw call stack:
(0x2e469e8b 0x387636c7 0x2e3a4f9b 0x2e08b3d3 0x2e0ccee1 0x38c48103 0x38c4ce77 0x38c49f9b 0x38c4d751 0x38c4d9d1 0x38d77dff 0x38d77cc4)
Aug 13 16:15:06 Dev-iPhone ReportCrash[4849] <Notice>: ReportCrash acting against PID 4827
Aug 13 16:15:06 Dev-iPhone ReportCrash[4849] <Notice>: Formulating crash report for process nsnetworkd[4827]
Aug 13 16:15:06 Dev-iPhone com.apple.launchd[1] (com.apple.nsnetworkd[4827]) <Warning>: (com.apple.nsnetworkd) Job appears to have crashed: Abort trap: 6

是否有一种解决方法可以安全地取消下载而不会使 nsnetwork 守护进程崩溃?谢谢!

最佳答案

看异常感觉是daemon无法生成resume数据。当然这是 iOS 中的错误,但作为解决方法,您可以做的是不允许取消,除非您收到一些字节,在这种情况下,守护进程应该能够生成正确的恢复数据。

关于ios - (NSURLSessionDownloadTask cancelByProducingResumeData) 崩溃 nsnetwork 守护进程 iOS 7.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com