From fff8704a449f22f639b3df709d7bf298566529f1 Mon Sep 17 00:00:00 2001 From: Dave Keck Date: Tue, 23 Apr 2013 11:10:34 -1000 Subject: [PATCH] Fixing crasher in AFNetworkActivityIndicatorManager, due to unsafe calls to updateNetworkActivityIndicatorVisibilityDelayed from multiple threads. --- AFNetworking/AFNetworkActivityIndicatorManager.m | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/AFNetworking/AFNetworkActivityIndicatorManager.m b/AFNetworking/AFNetworkActivityIndicatorManager.m index b7e4256..a000a14 100644 --- a/AFNetworking/AFNetworkActivityIndicatorManager.m +++ b/AFNetworking/AFNetworkActivityIndicatorManager.m @@ -105,7 +105,10 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; @synchronized(self) { _activityCount = activityCount; } - [self updateNetworkActivityIndicatorVisibilityDelayed]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); } - (void)incrementActivityCount { @@ -114,7 +117,10 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; _activityCount++; } [self didChangeValueForKey:@"activityCount"]; - [self updateNetworkActivityIndicatorVisibilityDelayed]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); } - (void)decrementActivityCount { @@ -123,7 +129,10 @@ static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; _activityCount = MAX(_activityCount - 1, 0); } [self didChangeValueForKey:@"activityCount"]; - [self updateNetworkActivityIndicatorVisibilityDelayed]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); } - (void)networkingOperationDidStart:(NSNotification *)notification {