ios - 为什么连接回 iOS 后台 NSURLSession 等待锁定的时间太长,导致应用程序崩溃?

标签 ios objective-c crash nsurlsession

为什么通过其配置连接 NSURLSession 需要很长时间,以至于它会在启动时崩溃应用程序:“未能及时启动”?

我在许多 iOS 应用程序中看到过类似的故障转储,包括纽约时报 iOS 应用程序和 Evernote 应用程序。

[NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:queue]

这是堆栈跟踪:

Thread 0:
0   libsystem_kernel.dylib          0x3afb7aa0 semaphore_wait_trap + 8
1   libdispatch.dylib               0x3af04d3d _dispatch_semaphore_wait_slow + 173
2   CFNetwork                       0x2febd8e3 -[__NSCFBackgroundSessionBridge setupBackgroundSession] + 379
3   CFNetwork                       0x2fef18a1 +[__NSCFSessionBridge bridgeForConfiguration:session:queue:] + 153
4   CFNetwork                       0x2fef6497 -[__NSCFURLSession initWithConfiguration:delegate:delegateQueue:] + 395
5   CFNetwork                       0x2fef6eb7 +[__NSCFURLSession sessionWithConfiguration:delegate:delegateQueue:] + 295

最佳答案

参见 Application Specific Information: Application failed to launch in time (iOS)? .

基本上有两件事要记住:

  1. 启动时,您只有几秒钟的时间来完成启动过程。应在应用启动后异步调用任何长时间运行的代码。

  2. 绝对确保在主线程上调用回调/ block /闭包等中的任何 UI 代码。你必须强制它这样做。

关于ios - 为什么连接回 iOS 后台 NSURLSession 等待锁定的时间太长,导致应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25679257/

相关文章:

ios - 使 Eureka DateTimeInlineRow 值显示在 textLabel 而不是 detailTextLabel 中

ios - 如何在 iOS 中获取唯一的设备 ID

c++ - 奇怪的分段违规

objective-c - 控制台日志中的崩溃日志

iphone - iPad Retina 登陆页面大小 - 2MB

ios - 适用于 iOS 的 FCM 富推送通知负载

ios - 始终从纵向呈现 View Controller [iOS]

ios - 如何更改所有 UICollectionView 单元格的按钮图像?

iphone - 将最后一行移出部分并删除部分时出现奇怪的动画

android - 每当我运行此代码时,它就会在 android 模拟器中崩溃