我的应用程序同步RSS提要大约需要15到30秒,对于每次同步,我需要beginBackgroundTaskWithExpirationHandler:。在iOS 7和iOS 8中,一切正常。

从iOS 9开始,调用[[UIApplication sharedApplication] endBackgroundTask: backgroundTask];会使应用程序崩溃,并显示来自调试器的消息:

由于信号9而终止。

根据我的研究,信号9表示该应用使用了过多的内存。当我使用乐器时,该应用程序永远不会超过30mb或40%的cpu。

我知道这是来自调用endBackgroundTask:的原因,因为如果不调用它,该应用程序不会崩溃。但是,一旦我调用endBackgroundTask:该应用程序每次都会崩溃。

我不确定这里出了什么问题。我已经尝试了一切。重新编写代码,移动代码,注释掉除endBackgroundTask:之外的所有内容。任何帮助或见解将不胜感激。

这是代码:

    @interface SyncClass ()

            @property (nonatomic) UIBackgroundTaskIdentifier backgroundTask;
    @end

    -(void)startSync
    {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

            [self beginBackgroundUpdateTask];
            // I then call my syncing code [syncClass sync];

        });


            //When sync is done call endBackgroundTask
            [self endBackgroundUpdateTask];
    }

    - (void) beginBackgroundUpdateTask
    {
        NSLog(@"Background Time:%f",[[UIApplication sharedApplication] backgroundTimeRemaining]);

        self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
            [self endBackgroundUpdateTask];
        }];

    }

    - (void) endBackgroundUpdateTask
    {
        [[UIApplication sharedApplication] endBackgroundTask: self.backgroundTask];
        self.backgroundTask = UIBackgroundTaskInvalid;
        NSLog(@"Ending background task");
    }

最佳答案

在这里回答我自己的问题。 AFNetworking和FMDB刚过时。通过可可豆荚更新它们似乎已经解决了该问题。

09-25 18:44