在后台实现计时器,如下所示并使用XCode 4.5.2
UIDevice *device = [UIDevice currentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
backgroundSupported = YES;
}
if (backgroundSupported)
{
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:bgTask];
}];
/*timer code goes here*/
}
我的应用程序在后台运行,我在AppDelegate的applicationDidEnterBackground
方法中有上面的代码,并在gdb中获取以下消息
无法endBackgroundTask:标识符4不存在后台任务,或者它可能已经结束。中断UIApplicationEndBackgroundTaskError()以进行调试。
我知道这个问题与Can't endBackgroundTask类似,但没有答案或建议。任何想法?
答案 0 :(得分:5)
确保您这样声明bgTask
:UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
我认为您可能将bgTask
声明为int或NSNumber。