我使用的是Xcode 7、Swift和iOS 9.0。
如果我。。。
用一些项创建AVQueuePlayer
开始玩吧
然后移除allitems()。。。内存无法释放。
如果调用此函数,它将开始占用内存:

var queuePlayer: AVQueuePlayer!

func startAgain(){

    if queuePlayer != nil{
        queuePlayer.pause()
        queuePlayer.removeAllItems()
        queuePlayer = nil
    }

    var items: [AVPlayerItem] = []

    for _ in 1 ... 10 {
        items.append(AVPlayerItem(URL: NSBundle.mainBundle().URLForResource("Music", withExtension: "mp3")!))
    }

    queuePlayer = AVQueuePlayer(items: items)
    queuePlayer.play()

    NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: "startAgain", userInfo: nil, repeats: false)
}

我甚至把AVPlayerItem和avurlaset分为子类,看看它们是否被去初始化了。。。他们会的!所以我不知道为什么会这样。
使用工具我可以看到VM:Performance工具数据是使用内存的,它永远不会被释放。
你有什么办法来释放记忆吗?
为了释放内存,我应该如何处理AVQueuePlayer?

最佳答案

您需要注意释放当前数组变量项:[AVPlayerItem]。最好将其创建为类属性。在代码中,计时器不会失效,因此它会保留旧数组。最佳实践是在创建新计时器之前释放旧计时器。

关于ios - 如何停止AVQueuePlayer内存泄漏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32933100/

10-10 23:44