|
@@ -106,7 +106,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
|
|
|
}
|
|
|
|
|
|
@interface AFNetworkReachabilityManager ()
|
|
|
-@property (readwrite, nonatomic, strong) id networkReachability;
|
|
|
+@property (readonly, nonatomic, assign) SCNetworkReachabilityRef networkReachability;
|
|
|
@property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus;
|
|
|
@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock;
|
|
|
@end
|
|
@@ -123,24 +123,24 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
|
|
|
return _sharedManager;
|
|
|
}
|
|
|
|
|
|
-#ifndef __clang_analyzer__
|
|
|
+ (instancetype)managerForDomain:(NSString *)domain {
|
|
|
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [domain UTF8String]);
|
|
|
|
|
|
AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability];
|
|
|
+
|
|
|
+ CFRelease(reachability);
|
|
|
|
|
|
return manager;
|
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
-#ifndef __clang_analyzer__
|
|
|
+ (instancetype)managerForAddress:(const void *)address {
|
|
|
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)address);
|
|
|
AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability];
|
|
|
|
|
|
+ CFRelease(reachability);
|
|
|
+
|
|
|
return manager;
|
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
+ (instancetype)manager
|
|
|
{
|
|
@@ -164,7 +164,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
|
|
|
return nil;
|
|
|
}
|
|
|
|
|
|
- self.networkReachability = CFBridgingRelease(reachability);
|
|
|
+ _networkReachability = CFRetain(reachability);
|
|
|
self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown;
|
|
|
|
|
|
return self;
|
|
@@ -177,6 +177,10 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
|
|
|
|
|
|
- (void)dealloc {
|
|
|
[self stopMonitoring];
|
|
|
+
|
|
|
+ if (_networkReachability != NULL) {
|
|
|
+ CFRelease(_networkReachability);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#pragma mark -
|
|
@@ -213,14 +217,13 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- id networkReachability = self.networkReachability;
|
|
|
SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL};
|
|
|
- SCNetworkReachabilitySetCallback((__bridge SCNetworkReachabilityRef)networkReachability, AFNetworkReachabilityCallback, &context);
|
|
|
- SCNetworkReachabilityScheduleWithRunLoop((__bridge SCNetworkReachabilityRef)networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);
|
|
|
+ SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context);
|
|
|
+ SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);
|
|
|
|
|
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{
|
|
|
SCNetworkReachabilityFlags flags;
|
|
|
- if (SCNetworkReachabilityGetFlags((__bridge SCNetworkReachabilityRef)networkReachability, &flags)) {
|
|
|
+ if (SCNetworkReachabilityGetFlags(self.networkReachability, &flags)) {
|
|
|
AFPostReachabilityStatusChange(flags, callback);
|
|
|
}
|
|
|
});
|
|
@@ -231,7 +234,7 @@ static void AFNetworkReachabilityReleaseCallback(const void *info) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- SCNetworkReachabilityUnscheduleFromRunLoop((__bridge SCNetworkReachabilityRef)self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);
|
|
|
+ SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);
|
|
|
}
|
|
|
|
|
|
#pragma mark -
|