diff --git a/src/objective-c/GRPCClient/GRPCCall.m b/src/objective-c/GRPCClient/GRPCCall.m
index bbfb5aa45f36229ce75c3c04b0ff1b465cee8171..e5a90f2caece85fd06c0a5ff36e7aabeba85a38a 100644
--- a/src/objective-c/GRPCClient/GRPCCall.m
+++ b/src/objective-c/GRPCClient/GRPCCall.m
@@ -382,7 +382,7 @@ static NSMutableDictionary *callFlags;
     [NSException raise:NSInvalidArgumentException format:@"host of %@ is nil", _host];
   }
   __weak typeof(self) weakSelf = self;
-  _connectivityMonitor = [GRPCConnectivityMonitor monitorWithHost:host];
+    _connectivityMonitor = [GRPCConnectivityMonitor monitorWithHost:host];
   void (^handler)() = ^{
     typeof(self) strongSelf = weakSelf;
     if (strongSelf) {
diff --git a/src/objective-c/GRPCClient/private/GRPCConnectivityMonitor.m b/src/objective-c/GRPCClient/private/GRPCConnectivityMonitor.m
index 2c5f21684d91cd617b4124079b007459c5d14525..8376744e289b26f3b726942d3302ba77cd5e7e2b 100644
--- a/src/objective-c/GRPCClient/private/GRPCConnectivityMonitor.m
+++ b/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) {
-    if (!flags.reachable) {
-      handler();
-    } else if (!_previousReachabilityFlags ||
-               (flags.isWWAN ^ _previousReachabilityFlags.isWWAN)) {
-      wifiStatusChangeHandler();
+    typeof(self) strongSelf = weakSelf;
+    if (strongSelf) {
+      if (!flags.reachable) {
+        handler();
+      } else if (strongSelf->_previousReachabilityFlags &&
+                 (flags.isWWAN ^ strongSelf->_previousReachabilityFlags.isWWAN)) {
+        wifiStatusChangeHandler();
+      }
+      strongSelf->_previousReachabilityFlags = flags;
     }
-    _previousReachabilityFlags = flags;
   }];
 }