ソースを参照

Squashed commit of the following:

commit 880e8b42998dc390e71df5000ca98cbc47878ef2
Author: Mattt Thompson <m@mattt.me>
Date:   Thu Dec 5 15:00:40 2013 -0800

    Refactoring & reformatting

commit 1cebad05bf2a427bf1751bcc568e06217529fd96
Merge: fa079d9 1963bf9
Author: Mattt Thompson <m@mattt.me>
Date:   Thu Dec 5 14:45:55 2013 -0800

    Merge branch 'async_reachability' of github.com:yury/AFNetworking into yury-async_reachability

commit 1963bf9d07023c15e00343edc8c61f6411d92119
Author: Yury Korolev <yurykorolev@me.com>
Date:   Fri Nov 29 11:50:28 2013 -0800

    Inline block

commit 523cb36925b2f1bc25df56776f3c77139389851c
Author: Yury Korolev <yurykorolev@me.com>
Date:   Thu Nov 28 13:51:41 2013 -0800

    Closes #1581. Remove sync SCNetworkReachabilityGetFlags call.
Mattt Thompson 11 年 前
コミット
7b4ed0fc62
1 ファイル変更11 行追加9 行削除
  1. 11 9
      AFNetworking/AFNetworkReachabilityManager.m

+ 11 - 9
AFNetworking/AFNetworkReachabilityManager.m

@@ -130,7 +130,6 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
     }
 
     self.networkReachability = reachability;
-
     self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown;
 
     return self;
@@ -139,8 +138,10 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
 - (void)dealloc {
     [self stopMonitoring];
 
-    CFRelease(_networkReachability);
-    _networkReachability = NULL;
+    if (_networkReachability) {
+        CFRelease(_networkReachability);
+        _networkReachability = NULL;
+    }
 }
 
 #pragma mark -
@@ -178,15 +179,16 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
 
     SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL};
     SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context);
+    SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);
 
-    SCNetworkReachabilityFlags flags;
-    SCNetworkReachabilityGetFlags(self.networkReachability, &flags);
-    dispatch_async(dispatch_get_main_queue(), ^{
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{
+        SCNetworkReachabilityFlags flags;
+        SCNetworkReachabilityGetFlags(self.networkReachability, &flags);
         AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags);
-        callback(status);
+        dispatch_async(dispatch_get_main_queue(), ^{
+            callback(status);
+        });
     });
-
-    SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);
 }
 
 - (void)stopMonitoring {