无法理解MyApp崩溃的位置

Var*_*han 10 iphone ipad ios ios8

我的应用程序在某些情况下崩溃.无法找到崩溃的原因和地点.

以下是崩溃日志(iPad/iOS 8.0.2).

Hardware Model:      iPad2,5
OS Version:          iOS 8.0.2 (12A405)
Report Version:      105

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread:  0
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x306b3dfc __pthread_kill + 8
1   libsystem_pthread.dylib         0x30733d0e pthread_kill + 58
2   libsystem_c.dylib               0x30653934 abort + 72
3   libc++abi.dylib                 0x2f864bb8 abort_message + 84
4   libc++abi.dylib                 0x2f87e66a default_terminate_handler() + 262
5   libobjc.A.dylib                     0x30052f0e _objc_terminate() + 190
6   libc++abi.dylib                 0x2f87bdec std::__terminate(void (*)()) + 76
7   libc++abi.dylib                 0x2f87b5ac __cxa_throw + 108
8   libobjc.A.dylib                     0x30052d46 objc_exception_throw + 246
9   CoreFoundation                  0x225dfe58 +[NSException raise:format:arguments:] + 100
10  Foundation                      0x232af2c4 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 88
11  BaseBoard                       0x270a08d8 __25-[BSAction sendResponse:]_block_invoke + 140
12  libdispatch.dylib               0x305bc99c _dispatch_barrier_sync_f_invoke + 44
13  BaseBoard                       0x270a0842 -[BSAction sendResponse:] + 98
14  UIKit                               0x25fd54d0 -[UIFetchContentInBackgroundAction sendResponse:] + 212
15  libdispatch.dylib               0x305b3610 _dispatch_call_block_and_release + 8
16  libdispatch.dylib               0x305b35fc _dispatch_client_callout + 20
17  libdispatch.dylib               0x305be2b2 _dispatch_main_queue_callback_4CF$VARIANT$mp + 714
18  CoreFoundation                  0x225a5e5c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 4
19  CoreFoundation                  0x225a457c __CFRunLoopRun + 1508
20  CoreFoundation                  0x224f1dac CFRunLoopRunSpecific + 472
21  CoreFoundation                  0x224f1bbe CFRunLoopRunInMode + 102
22  GraphicsServices                0x2985404c GSEventRunModal + 132
23  UIKit                               0x25abda2c UIApplicationMain + 1436
24  MyApp                               0x000fb9f2 main (main.m:15)
25  libdyld.dylib                       0x305eeaac start + 0
Run Code Online (Sandbox Code Playgroud)

提前致谢..

小智 17

与堆栈跟踪对应的异常消息是:

"这个请求已被绝育 - 你不能调用-sendResponse:两次,也不能编码后"

虽然不可能单独从堆栈中确定,但您很可能称为completionHandler传递给您的app delegate的-application:performFetchWithCompletionHandler:方法两次.


Fer*_*vus 2

后台获取由操作系统根据您在 setMinimumBackgroundFetchInterval: 方法中设置的值触发。如果后台获取时间过长,您所看到的看起来就像操作系统对您的应用程序执行的操作。

您被分配了一段时间(30 秒)来完成工作。如果您没有完成,操作系统将终止您的应用程序并出现上述异常。在此处阅读有关如何延长所需时间的更多信息。

基本上,您需要请求更多时间来完成您的后台工作,如下所示:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
        // Clean up any unfinished task business by marking where you
        // stopped or ending the task outright.
        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];

    // Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        // Do the work associated with the task, preferably in chunks.

        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}
Run Code Online (Sandbox Code Playgroud)