我正在创建一个音频将在后台播放的应用程序。在以下代码中,bgTask未声明。 bgTask应该是什么样的对象?
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{});
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
答案 0 :(得分:17)
您需要在分配之前声明bgTask:
UIBackgroundTaskIdentifier bgTask = 0;
答案 1 :(得分:10)
我无法对之前的答案发表评论,但是要初始化UIBackgroundTaskIdentifier,您不应将其设置为nil或0.您应该将其设置为:
UIBackgroundTaskInvalid
在documentation UIBackgroundTaskInvalid中,它应该用于初始化变量或检查错误。
答案 2 :(得分:2)
你正在使用块中的bgTask,所以你必须像这样声明它。
__block UIBackgroundTaskIdentifier bgTask = 0;
__block
将允许此变量在块方法中使用。它有双重下划线。