diff --git a/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m b/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m index d828f4260..199b89353 100644 --- a/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m +++ b/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m @@ -519,9 +519,10 @@ - (void)removeLocalVideoTrackDimensionDetection:(RTCVideoTrack *)videoTrack { RTCAudioTrack *audioTrack = [self.peerConnectionFactory audioTrackWithTrackId:trackUUID]; audioTrack.isEnabled = originalTrack.isEnabled; [self.localTracks setObject:audioTrack forKey:trackUUID]; - for (NSString* streamId in self.localStreams) { + for (NSString* streamId in [self.localStreams allKeys]) { RTCMediaStream* stream = [self.localStreams objectForKey:streamId]; - for (RTCAudioTrack* track in stream.audioTracks) { + if (stream == nil) continue; + for (RTCAudioTrack* track in [stream.audioTracks copy]) { if ([trackID isEqualToString:track.trackId]) { [stream addAudioTrack:audioTrack]; } @@ -537,9 +538,10 @@ - (void)removeLocalVideoTrackDimensionDetection:(RTCVideoTrack *)videoTrack { [self addLocalVideoTrackDimensionDetection:videoTrack]; [self.localTracks setObject:videoTrack forKey:trackUUID]; - for (NSString* streamId in self.localStreams) { + for (NSString* streamId in [self.localStreams allKeys]) { RTCMediaStream* stream = [self.localStreams objectForKey:streamId]; - for (RTCVideoTrack* track in stream.videoTracks) { + if (stream == nil) continue; + for (RTCVideoTrack* track in [stream.videoTracks copy]) { if ([trackID isEqualToString:track.trackId]) { [stream addVideoTrack:videoTrack]; }