Reputation: 181
I am making an application where audio will play in the background. In the following code, bgTask is undeclared. What kind of object should bgTask be?
- (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;
}
Upvotes: 14
Views: 23730
Reputation: 9143
You are using the bgTask in the block so you have to declare it like this..
__block UIBackgroundTaskIdentifier bgTask = 0;
__block
will allow this variable to use in the block method. And its have double underscore.
Upvotes: 2
Reputation: 44063
You need to declare bgTask before you assign:
UIBackgroundTaskIdentifier bgTask = 0;
Upvotes: 17
Reputation: 171
I cannot comment on previous answers, however to initialize UIBackgroundTaskIdentifier you should not set it to nil or 0. You should set it to:
UIBackgroundTaskInvalid
In the documentation UIBackgroundTaskInvalid says it should be used to initialize variables or to check for errors.
Upvotes: 10