From 0621ae69037c99377cd406c2c1ad8a5976296804 Mon Sep 17 00:00:00 2001 From: Vitaliy Gozhenko Date: Sat, 12 Dec 2015 00:10:30 +0200 Subject: [PATCH] Fix crash when app goes to background mode twice during replication --- MYBackgroundMonitor.m | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/MYBackgroundMonitor.m b/MYBackgroundMonitor.m index 0730d68..9ab9187 100644 --- a/MYBackgroundMonitor.m +++ b/MYBackgroundMonitor.m @@ -62,21 +62,23 @@ - (void) dealloc { - (BOOL) beginBackgroundTaskNamed: (NSString*)name { @synchronized(self) { - Assert(_bgTask == UIBackgroundTaskInvalid); - _bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithName: name - expirationHandler: ^{ - // Process ran out of background time before endBackgroundTask was called: - [self endBackgroundTask]; - if (_onBackgroundTaskExpired) - _onBackgroundTaskExpired(); - }]; - return (_bgTask != UIBackgroundTaskInvalid); - } + if (_bgTask == UIBackgroundTaskInvalid) { + _bgTask = [[UIApplication sharedApplication] + beginBackgroundTaskWithName: name + expirationHandler: ^{ + // Process ran out of background time before endBackgroundTask was called: + [self endBackgroundTask]; + if (_onBackgroundTaskExpired) + _onBackgroundTaskExpired(); + }]; + } + return (_bgTask != UIBackgroundTaskInvalid); + } } - (BOOL) hasBackgroundTask { - @synchronized(self) { + @synchronized(self) { return _bgTask != UIBackgroundTaskInvalid; } }