ios - NSNotification 被解雇了不止一次?

标签 ios iphone swift nsnotificationcenter observers

我正在为测试项目创建示例播放器。我创建了一个 NSNotification 来调用一个函数来播放数组中的下一个音轨。问题是通知连续调用此函数大约 8 次?我不知道为什么会这样。这是我的代码,感谢您的帮助!

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()
    }

最佳答案

除了不应该多次设置观察者这一事实之外,我认为您应该在再次调用播放函数之前将播放器重置为零

func autoplayNextTrack(notefication: NSNotification) {
    player.seekToTime(kCMTimeZero)
    if (currentTrack + 1) >= urlPlayerItems.count {
        currentTrack = 0
    } else {
        currentTrack += 1
    }

    playTrack()
}

关于ios - NSNotification 被解雇了不止一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42031473/

相关文章:

ios - ARKit/ARHitTestResult中worldTransform和localTransform的区别

iphone - MKMapView使用的内存可以如何释放?

ios - 从一个数据源切换到另一个数据源并重新加载 UITableView 时错位或隐藏 UITableView 部分标题

swift - Swift 3 中非转义闭包的问题

ios - 在性能和内存方面,对于 Core Image,JPG 还是 PNG 更好?

iphone - 只要按下按钮,应用程序就会崩溃

iphone - 自 iOS 4.0 以来,存在哪些选项可将视频嵌入 View ?

iphone - 防止UIWebView将7个数字做成超链接

swift - 是否可以在 Swift 4 中使用变量访问结构成员?

swift - 创建具有多个计算函数的简单类( )