Fixing crasher in AFNetworkActivityIndicatorManager, due to unsafe calls to updateNetworkActivityIndicatorVisibilityDelayed from multiple threads.

This commit is contained in:
Dave Keck 2013-04-23 11:10:34 -10:00
parent 215a32e23c
commit fff8704a44

View file

@ -105,7 +105,10 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17;
@synchronized(self) { @synchronized(self) {
_activityCount = activityCount; _activityCount = activityCount;
} }
[self updateNetworkActivityIndicatorVisibilityDelayed];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateNetworkActivityIndicatorVisibilityDelayed];
});
} }
- (void)incrementActivityCount { - (void)incrementActivityCount {
@ -114,7 +117,10 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17;
_activityCount++; _activityCount++;
} }
[self didChangeValueForKey:@"activityCount"]; [self didChangeValueForKey:@"activityCount"];
[self updateNetworkActivityIndicatorVisibilityDelayed];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateNetworkActivityIndicatorVisibilityDelayed];
});
} }
- (void)decrementActivityCount { - (void)decrementActivityCount {
@ -123,7 +129,10 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17;
_activityCount = MAX(_activityCount - 1, 0); _activityCount = MAX(_activityCount - 1, 0);
} }
[self didChangeValueForKey:@"activityCount"]; [self didChangeValueForKey:@"activityCount"];
[self updateNetworkActivityIndicatorVisibilityDelayed];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateNetworkActivityIndicatorVisibilityDelayed];
});
} }
- (void)networkingOperationDidStart:(NSNotification *)notification { - (void)networkingOperationDidStart:(NSNotification *)notification {