Impossible to stop AVPlayer Impossible to stop AVPlayer ios ios

Impossible to stop AVPlayer

From this post I found the best solution to completely stop AVPlayer before you leave or start a new player:


[Update] For SWIFT 3:

player.replaceCurrentItem(with: nil)

If you declare player as an optional variable, you can then set the player to nil to deallocate it.

Silly example but it shows what happens:

import UIKitimport AVFoundationclass ViewController: UIViewController {    @IBOutlet weak var btnPlay: UIButton!    var player:AVPlayer?    override func viewDidLoad() {        super.viewDidLoad()    }    @IBAction func btnPress(sender: AnyObject) {        if (btnPlay.titleLabel?.text == "Play") {            initPlayer()            btnPlay.setTitle("Stop", forState: UIControlState.Normal)        } else {            stopPlayer()            btnPlay.setTitle("Play", forState: UIControlState.Normal)        }    }    func initPlayer()  {        if let play = player {            print("playing")          } else {            print("player allocated")            player = AVPlayer(URL: NSURL(string: "")!)            print("playing")            player!.play()        }    }    func stopPlayer() {        if let play = player {            print("stopped")            play.pause()            player = nil            print("player deallocated")        } else {            print("player was already deallocated")        }    }}

SWIFT 3 Version:

player.replaceCurrentItem(with: nil)