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 - (void)handleLossWithHandler:(void (^)())handler
wifiStatusChangeHandler:(nonnull void (^)())wifiStatusChangeHandler { wifiStatusChangeHandler:(nonnull void (^)())wifiStatusChangeHandler {
__weak typeof(self) weakSelf = self;
[self startListeningWithHandler:^(GRPCReachabilityFlags *flags) { [self startListeningWithHandler:^(GRPCReachabilityFlags *flags) {
typeof(self) strongSelf = weakSelf;
if (strongSelf) {
if (!flags.reachable) { if (!flags.reachable) {
handler(); handler();
} else if (!_previousReachabilityFlags || } else if (strongSelf->_previousReachabilityFlags &&
(flags.isWWAN ^ _previousReachabilityFlags.isWWAN)) { (flags.isWWAN ^ strongSelf->_previousReachabilityFlags.isWWAN)) {
wifiStatusChangeHandler(); wifiStatusChangeHandler();
} }
_previousReachabilityFlags = flags; strongSelf->_previousReachabilityFlags = flags;
}
}]; }];
} }

Loading…
Cancel
Save