我在XTubeManager中遇到大量崩溃(似乎是CFNetwork内部).不幸的是,控制台日志不可用,只有调用堆栈(见下文).
问题:
>我可以想象我的应用程序在后台崩溃,因此没有
控制台日志是写的,你认为这是可能的吗?
>我是否必须以不同方式处理backgroundTask到期,例如通过
取消所有我的NSURLRequests? (见下面的代码)
背景
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; });
这通常在applicationDidEnterBackground中调用
调用堆栈
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