Break retain cycle and fix bug

pull/8441/head
Muxi Yan 8 years ago
parent b93053f868
commit 5655130171
  1. 10
      src/objective-c/GRPCClient/private/GRPCConnectivityMonitor.m

@ -153,14 +153,18 @@ static void PassFlagsToContextInfoBlock(SCNetworkReachabilityRef target,
- (void)handleLossWithHandler:(void (^)())handler
wifiStatusChangeHandler:(nonnull void (^)())wifiStatusChangeHandler {
__weak typeof(self) weakSelf = self;
[self startListeningWithHandler:^(GRPCReachabilityFlags *flags) {
typeof(self) strongSelf = weakSelf;
if (strongSelf) {
if (!flags.reachable) {
handler();
} else if (!_previousReachabilityFlags ||
(flags.isWWAN ^ _previousReachabilityFlags.isWWAN)) {
} else if (strongSelf->_previousReachabilityFlags &&
(flags.isWWAN ^ strongSelf->_previousReachabilityFlags.isWWAN)) {
wifiStatusChangeHandler();
}
_previousReachabilityFlags = flags;
strongSelf->_previousReachabilityFlags = flags;
}
}];
}

Loading…
Cancel
Save