繁体   English   中英

如何停止AVQueuePlayer内存泄漏?

[英]How to stop AVQueuePlayer memory leak?

我正在使用Xcode 7,Swift和iOS 9.0。

如果我...

  • 使用某些项目创建AVQueuePlayer
  • 开始播放
  • 然后removeAllItems() ...不会释放内存。

如果调用此函数,它将开始占用内存:

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

我什至将AVPlayerItemAVURLAsset子类 ,看它们是否被初始化了……而且它们确实可以! 所以我不知道为什么会这样。

使用仪器我可以看到VM:性能工具数据正在使用内存,并且永远不会释放。

您有什么想法释放内存吗?

我应该如何使用AVQueuePlayer释放内存?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM