gpt4 book ai didi

ios - 调用 [NSURLSessionDataDelegate resume] 时的 SIGSEGV

转载 作者:行者123 更新时间:2023-11-28 19:03:42 26 4
gpt4 key购买 nike

我最近使用 iOS 7 上可用的新 NSURLSession 完成了我的第一个项目。

我构建了一个应用程序来探索 NSURLSession 的整个 API,实现各种任务:- 数据任务- 下载任务- 上传任务

我还使用后台 session 实现了后台上传。经过数小时的调试和反复试验实现后,我终于到达了整个应用程序可以正常工作的地步 - 对我来说就是这样。我将它发布给了少数测试人员 (< 5),其中一些人遇到了一个我似乎无法重现甚至无法追踪的错误。

我的代码的特定部分 - 在一些不相关的操作之后 - 负责恢复后台 session 中可用的当前上传任务:

    [[appDelegate getNSURLSessionForBackgroundTransfers] getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
for(NSURLSessionUploadTask *task in uploadTasks) {
[task resume];
}

应用程序有时会崩溃,我的日志中会出现以下异常(我使用的是曲棍球应用程序):

SIGSEGV

开启:

0   libdispatch.dylib                   0x3ba87772 _dispatch_async_f + 10
1 CFNetwork 0x30a5b86f -[__NSCFBackgroundSessionTask _onqueue_connection_resume] + 92
2 Memoir Beta 0x00231e85 __55-[PhotoBinariesUploader runCodeEvenIfBackgroundMode:]_block_invoke_3 (PhotoBinariesUploader.m:553)
3 CFNetwork 0x30a848c5 __50-[__NSCFURLSession getTasksWithCompletionHandler:]_block_invoke246 + 14

有什么想法吗?关于它可能是什么的任何提示?

提前致谢!泽

最佳答案

我从 iOS 7.1 开始就看到了同样的问题。如果您在状态为 NSURLSessionTaskStateCompleted 的任务上调用 resume(可能也是 NSURLSessionTaskStateCanceling),则会发生崩溃。我认为这是 iOS 7.1 中引入的错误,因为在 iOS 7 下简历被忽略了。

我的做法是:

  if (task.state == NSURLSessionTaskStateSuspended) {
[task resume];
}

这应该可以防止崩溃的发生。无论如何,只有暂停的任务才能恢复。

它仍然令人沮丧,因为它在 iOS 7 下运行了几个月没有问题,现在发布的应用程序因此产生了很多崩溃。

关于ios - 调用 [NSURLSessionDataDelegate resume] 时的 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453985/

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