Ios 在后台,你的管理器崩溃了吗?

Ios 在后台,你的管理器崩溃了吗?,ios,objective-c,nsurlconnection,nsurlrequest,uibackgroundtask,Ios,Objective C,Nsurlconnection,Nsurlrequest,Uibackgroundtask,我在XTubeManager中遇到大量崩溃(似乎是CFNetwork内部的)。不幸的是,控制台日志不可用,只有调用堆栈(见下文) 问题: 我可以想象我的应用程序在后台崩溃了,因此没有 控制台日志已写入,您认为这有可能吗 我是否必须以不同方式处理背景任务到期,例如 取消所有我的nsurl请求?(见下面的代码) 背景 我经常在后台醒来(或通过后台推送),并运行如下后台任务: NSString *myTaskName = @"some.random.task.name"; _

我在XTubeManager中遇到大量崩溃(似乎是CFNetwork内部的)。不幸的是,控制台日志不可用,只有调用堆栈(见下文)

问题:
  • 我可以想象我的应用程序在后台崩溃了,因此没有 控制台日志已写入,您认为这有可能吗
  • 我是否必须以不同方式处理背景任务到期,例如 取消所有我的
    nsurl请求
    ?(见下面的代码)

背景 我经常在后台醒来(或通过后台推送),并运行如下后台任务:

NSString *myTaskName = @"some.random.task.name";
__block UIBackgroundTaskIdentifier taskID = [UIApplication.sharedApplication beginBackgroundTaskWithName:myTaskName expirationHandler:^{
    [UIApplication.sharedApplication endBackgroundTask:taskID];
    taskID = UIBackgroundTaskInvalid;
}];
dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(q,
    // doing some NSURLRequests stuff here
    [UIApplication.sharedApplication endBackgroundTask:taskID];
    taskID = UIBackgroundTaskInvalid;
});
这通常在
ApplicationIdentinterBackground

呼叫栈
NSURLConnection堆栈中的某些对象正在消失。一些需要检查的事项:

  • 确保您没有两次启动连接。(如果您不立即使用…
    start:NO
    ,请确保从不调用
    start
  • 确保您没有启动连接,然后在连接完成之前释放最后一个引用
  • 确保您没有使用同步NSURLConnection调用(永远)

不过,除此之外,我以前也见过类似的车祸,而且在很多情况下没有明显的原因。除非你看到崩溃的频率很高,否则除了提交一个bug并希望苹果能为每个人找到一个修复它的方法之外,可能没有其他方法可以修复它。

你有没有可能在你的应用程序中使用Branch.io集成?没有no@ZacharyWest我也看到了,我正在使用Branch。同样使用相同的稀疏崩溃日志。@bpapa这可能是巧合,但我在集成Branch时开始看到这种崩溃(在本版本中没有太多其他更改)。有可能是他们对网络堆栈做了什么导致了这种情况。@ZacharyWest多久一次?这是一个全新的应用程序,但到目前为止,我只有几份关于这次崩溃的报告。
Thread : Crashed: com.apple.NSURLConnectionLoader
0  libobjc.A.dylib                0x183599b90 objc_msgSend + 16
1  CFNetwork                      0x184513300 XTubeManager::withTubeManager(CoreSchedulingSet const*, void (GlueTubeManager*) block_pointer) + 96
2  CFNetwork                      0x18451149c -[__NSURLSessionLocal _withConnectionCache_enqueueRequest:forProtocol:scheduling:options:] + 128
3  CFNetwork                      0x1845c3798 HTTPProtocol::asynchronouslyCreateAndOpenStream_WithMessage_AfterCookiesAndAuthenticatorHeaders(__CFHTTPMessage*) + 2000
4  CFNetwork                      0x1845c2ef8 HTTPProtocol::asynchronouslyAddAuthenticatorHeadersAndContinue(__CFHTTPMessage*) + 144
5  CFNetwork                      0x1845c4ba4 ___ZN12HTTPProtocol35asynchronouslyAddCookiesAndContinueEP15__CFHTTPMessage_block_invoke_2 + 28
6  libdispatch.dylib              0x18396d47c _dispatch_client_callout + 16