From ee6ec1f6c8ccf870e66c38a742f542f6e9b9b51d Mon Sep 17 00:00:00 2001 From: Alexander Date: Thu, 19 Jan 2023 11:32:32 +0100 Subject: [PATCH] Add timeObserver reference. --- GPVideoPlayer/Classes/GPVideoPlayer.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/GPVideoPlayer/Classes/GPVideoPlayer.swift b/GPVideoPlayer/Classes/GPVideoPlayer.swift index 23c6fd9..33d364f 100644 --- a/GPVideoPlayer/Classes/GPVideoPlayer.swift +++ b/GPVideoPlayer/Classes/GPVideoPlayer.swift @@ -36,6 +36,7 @@ public class GPVideoPlayer: UIView { } //MARK: Private Properties + private var timeObserver: Any? private var playerLayer: AVPlayerLayer? private var player: AVQueuePlayer? private var playerItems: [AVPlayerItem]? @@ -51,6 +52,10 @@ public class GPVideoPlayer: UIView { } deinit { + if let timeObserver = timeObserver { + player?.removeTimeObserver(timeObserver) + } + player?.removeObserver(self, forKeyPath: "timeControlStatus") NotificationCenter.default.removeObserver(self) } @@ -172,7 +177,7 @@ private extension GPVideoPlayer { let player = AVQueuePlayer(items: playerItems) self.playerItems = playerItems - player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: 2), queue: DispatchQueue.main) {[weak self] (progressTime) in + timeObserver = player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 1, preferredTimescale: 2), queue: DispatchQueue.main) {[weak self] (progressTime) in if let duration = player.currentItem?.duration { let durationSeconds = CMTimeGetSeconds(duration)