Impossible d'arrêter AVPlayer
Je suis actuellement en train de tester l'utilisation de AVPlayer avec les url de streaming audio, en utilisant Swift. Il y a play() et pause() méthodes, mais le problème est que, en s'arrêtant seulement, le flux reste en mémoire cache de l'appareil.
Voici mon code de test :
import UIKit
import AVFoundation
class ViewController: UIViewController {
let player = AVPlayer(URL: NSURL(string: "http://streaming.radio.rtl.fr/rtl-1-48-192")!)
@IBOutlet weak var btnPlay: UIButton!
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() {
player.play()
}
func stopPlayer() {
//player.currentItem = nil //Last thing I tried, but generate an error
player.pause()
}
}
Ici sont les problèmes lorsque vous essayez des choses :
player = nil
: "Impossible d'affecter une valeur de type 'NilLiteralCOnvertible' à une valeur de type 'AVPlayer'"
player.currentItem = nil
: "Ne peut pas l'affecter à la propriété: 'currentItem' est une seule propriété"
J'ai tout essayé, même à travers AVQueuePlayer sans résultat efficace. (évidemment, puisque je n'ai qu'un seul élément dans mon cas).
Comment arrêter AVPlayer ou détruire son instance ?
source d'informationauteur Zl3n
Vous devez vous connecter pour publier un commentaire.
Si vous déclarez
player
comme une variable optionnelle, vous pouvez configurer le lecteur pournil
à désallouer.Exemple stupide, mais il montre ce qui se passe:
De cette post j'ai trouvé la meilleure solution pour arrêter complètement AVPlayer avant de vous quitter, ou de lancer un nouveau joueur:
SWIFT 3 Version: