diff --git a/MQTTClient/MQTTClient/MQTTSessionManager.m b/MQTTClient/MQTTClient/MQTTSessionManager.m index c547fb2d..330b022b 100644 --- a/MQTTClient/MQTTClient/MQTTSessionManager.m +++ b/MQTTClient/MQTTClient/MQTTSessionManager.m @@ -383,12 +383,13 @@ - (void)newMessage:(MQTTSession *)session data:(NSData *)data onTopic:(NSString - (void)connected:(MQTTSession *)session sessionPresent:(BOOL)sessionPresent { if (self.clean || !self.reconnectFlag || !sessionPresent) { - if (self.subscriptions && [self.subscriptions count]) { + NSDictionary *subscriptions = [self.subscriptions copy]; + if (subscriptions.count) { [self.effectiveSubscriptions removeAllObjects]; self.effectiveSubscriptions = self.effectiveSubscriptions; - [self.session subscribeToTopics:self.subscriptions subscribeHandler:^(NSError *error, NSArray *gQoss) { + [self.session subscribeToTopics:subscriptions subscribeHandler:^(NSError *error, NSArray *gQoss) { if (!error) { - NSArray *allTopics = self.subscriptions.allKeys; + NSArray *allTopics = subscriptions.allKeys; for (int i = 0; i < allTopics.count; i++) { NSString *topic = allTopics[i]; NSNumber *gQos = gQoss[i];