面对苹果多任务代码中的错误

时间:2010-06-16 23:35:02

标签: iphone objective-c

实际上我正在为多任务工作而面临错误请帮助我,因为我需要处理后台应用程序以及前台应用程序

 - (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication*    app = [UIApplication sharedApplication];

    // Request permission to run in the background. Provide an
    // expiration handler in case the task runs long.
    NSAssert(bgTask == UIBackgroundTaskInvalid, nil);

    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        // Synchronize the cleanup call on the main thread in case
        // the task actually finishes at around the same time.
        dispatch_async(dispatch_get_main_queue(), ^{
            if (bgTask != UIBackgroundTaskInvalid)
            {
                [app 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.

        // Synchronize the cleanup call on the main thread in case
        // the expiration handler is fired at the same time.
        dispatch_async(dispatch_get_main_queue(), ^{
            if (bgTask != UIBackgroundTaskInvalid)
            {
                [app endBackgroundTask:bgTask];
                bgTask = UIBackgroundTaskInvalid;
            }
        });
    });
}

2 个答案:

答案 0 :(得分:3)

加入@interface:

UIBackgroundTaskIdentifier bgTask;

(现在从NDA出来)。

答案 1 :(得分:0)

如果您有开发者帐户,请查看developer documentation。我们无法真正回答os4.0问题,因为它在NDA下,但您需要回答该问题的所有信息都在该页面上(登录后)。