diff --git a/FirebaseRemoteConfig/Sources/RCNConfigRealtime.m b/FirebaseRemoteConfig/Sources/RCNConfigRealtime.m index 4eba5b7662d..94bc67e6324 100644 --- a/FirebaseRemoteConfig/Sources/RCNConfigRealtime.m +++ b/FirebaseRemoteConfig/Sources/RCNConfigRealtime.m @@ -688,16 +688,17 @@ - (FIRConfigUpdateListenerRegistration *)addConfigUpdateListener: if (listener == nil) { return nil; } + __block id listenerCopy = listener; __weak RCNConfigRealtime *weakSelf = self; dispatch_async(_realtimeLockQueue, ^{ __strong RCNConfigRealtime *strongSelf = weakSelf; - [strongSelf->_listeners addObject:listener]; + [strongSelf->_listeners addObject:listenerCopy]; [strongSelf beginRealtimeStream]; }); return [[FIRConfigUpdateListenerRegistration alloc] initWithClient:self - completionHandler:listener]; + completionHandler:listenerCopy]; } - (void)removeConfigUpdateListener:(void (^_Nonnull)(FIRRemoteConfigUpdate *configUpdate,