Я создаю образец игрока для тестового проекта. Я создал NSNotification для вызова функции для воспроизведения следующей звуковой дорожки внутри массива. Проблема в том, что уведомление вызывает эту функцию примерно 8 раз подряд? Я понятия не имею, почему это происходит. Вот мой код и спасибо за помощь!NSNotification срабатывает более одного раза?
let player = AVPlayer()
var urlPlayerItems = [String]()
var currentTrack: Int = 0
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Checks to see if player reached end
NotificationCenter.default.addObserver(self,
selector: #selector(PlayerViewController.autoplayNextTrack(notification:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: player.currentItem)
}
func playTrack() {
if urlPlayerItems.count > 0 {
let newMovieURL = URL(string: urlPlayerItems[currentTrack])!
asset = AVURLAsset(url: newMovieURL, options: nil)
player.play()
}
}
func autoplayNextTrack(notefication: NSNotification) {
if (currentTrack + 1) >= urlPlayerItems.count {
currentTrack = 0
} else {
currentTrack += 1
}
playTrack()
}
попробовать движущуюся addObserver в viewDidLoad или удалить его in viewWillDisappear –
Я пробовал это и до сих пор не работает. Он по-прежнему вызван несколько раз, хотя, когда я удаляю код из autoplayNextTrack, и просто поставить оператор печати вызывает его один раз? – user7097242
Также, когда я комментирую кластер playTrack() в autoplayNextTrack, он не вызывает его более одного раза – user7097242