【问题标题】:How to stop AVQueuePlayer memory leak?如何阻止 AVQueuePlayer 内存泄漏?
【发布时间】:2016-01-01 04:40:18
【问题描述】:

我正在使用 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 进行了子类化,以查看它们是否被取消初始化......他们确实做到了!所以我不知道为什么会这样。

Using Instruments 我可以看到 VM: Performance tool data 正在使用内存并且它永远不会被释放。

你知道如何释放内存吗?

我应该如何处理 AVQueuePlayer 以释放内存?

【问题讨论】:

    标签: ios swift memory memory-leaks ios9


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-07-17
      • 1970-01-01
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      相关资源
      最近更新 更多