@@ -53,7 +53,7 @@ static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetwork
5353 BOOL canConnectionAutomatically = (((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0 ) || ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic ) != 0 ));
5454 BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically && (flags & kSCNetworkReachabilityFlagsInterventionRequired ) == 0 );
5555 BOOL isNetworkReachable = (isReachable && (!needsConnection || canConnectWithoutUserInteraction));
56-
56+
5757 AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusUnknown;
5858 if (isNetworkReachable == NO ) {
5959 status = AFNetworkReachabilityStatusNotReachable;
@@ -66,7 +66,7 @@ static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetwork
6666 else {
6767 status = AFNetworkReachabilityStatusReachableViaWiFi;
6868 }
69-
69+
7070 return status;
7171}
7272
@@ -116,23 +116,32 @@ + (instancetype)sharedManager {
116116 static AFNetworkReachabilityManager *_sharedManager = nil ;
117117 static dispatch_once_t onceToken;
118118 dispatch_once (&onceToken, ^{
119+ #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
120+ struct sockaddr_in6 address;
121+ bzero (&address, sizeof (address));
122+ address.sin6_len = sizeof (address);
123+ address.sin6_family = AF_INET6;
124+
125+ _sharedManager = [self managerForAddress: &address];
126+ #else
119127 struct sockaddr_in address;
120128 bzero (&address, sizeof (address));
121129 address.sin_len = sizeof (address);
122130 address.sin_family = AF_INET;
123-
131+
124132 _sharedManager = [self managerForAddress: &address];
133+ #endif
125134 });
126-
135+
127136 return _sharedManager;
128137}
129138
130139#ifndef __clang_analyzer__
131140+ (instancetype )managerForDomain : (NSString *)domain {
132141 SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName (kCFAllocatorDefault , [domain UTF8String ]);
133-
142+
134143 AFNetworkReachabilityManager *manager = [[self alloc ] initWithReachability: reachability];
135-
144+
136145 return manager;
137146}
138147#endif
@@ -141,7 +150,7 @@ + (instancetype)managerForDomain:(NSString *)domain {
141150+ (instancetype )managerForAddress : (const void *)address {
142151 SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress (kCFAllocatorDefault , (const struct sockaddr *)address);
143152 AFNetworkReachabilityManager *manager = [[self alloc ] initWithReachability: reachability];
144-
153+
145154 return manager;
146155}
147156#endif
@@ -151,10 +160,10 @@ - (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability {
151160 if (!self) {
152161 return nil ;
153162 }
154-
163+
155164 self.networkReachability = CFBridgingRelease (reachability);
156165 self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown;
157-
166+
158167 return self;
159168}
160169
@@ -185,27 +194,27 @@ - (BOOL)isReachableViaWiFi {
185194
186195- (void )startMonitoring {
187196 [self stopMonitoring ];
188-
197+
189198 if (!self.networkReachability ) {
190199 return ;
191200 }
192-
201+
193202 __weak __typeof (self)weakSelf = self;
194203 AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) {
195204 __strong __typeof (weakSelf)strongSelf = weakSelf;
196-
205+
197206 strongSelf.networkReachabilityStatus = status;
198207 if (strongSelf.networkReachabilityStatusBlock ) {
199208 strongSelf.networkReachabilityStatusBlock (status);
200209 }
201-
210+
202211 };
203-
212+
204213 id networkReachability = self.networkReachability ;
205214 SCNetworkReachabilityContext context = {0 , (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL };
206215 SCNetworkReachabilitySetCallback ((__bridge SCNetworkReachabilityRef)networkReachability, AFNetworkReachabilityCallback, &context);
207216 SCNetworkReachabilityScheduleWithRunLoop ((__bridge SCNetworkReachabilityRef)networkReachability, CFRunLoopGetMain (), kCFRunLoopCommonModes );
208-
217+
209218 dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0 ),^{
210219 SCNetworkReachabilityFlags flags;
211220 if (SCNetworkReachabilityGetFlags ((__bridge SCNetworkReachabilityRef)networkReachability, &flags)) {
@@ -218,7 +227,7 @@ - (void)stopMonitoring {
218227 if (!self.networkReachability ) {
219228 return ;
220229 }
221-
230+
222231 SCNetworkReachabilityUnscheduleFromRunLoop ((__bridge SCNetworkReachabilityRef)self.networkReachability , CFRunLoopGetMain (), kCFRunLoopCommonModes );
223232}
224233
@@ -240,9 +249,9 @@ + (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key {
240249 if ([key isEqualToString: @" reachable" ] || [key isEqualToString: @" reachableViaWWAN" ] || [key isEqualToString: @" reachableViaWiFi" ]) {
241250 return [NSSet setWithObject: @" networkReachabilityStatus" ];
242251 }
243-
252+
244253 return [super keyPathsForValuesAffectingValueForKey: key];
245254}
246255
247256@end
248- #endif
257+ #endif
0 commit comments