首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止AVQueuePlayer内存泄漏?

如何阻止AVQueuePlayer内存泄漏?
EN

Stack Overflow用户
提问于 2015-10-04 11:46:02
回答 1查看 260关注 0票数 1

我使用的是Xcode 7、Swift和iOS 9.0。

如果我..。

  • 使用一些项目创建AVQueuePlayer
  • 开始演奏吧
  • 然后removeAllItems()..。记忆不会被释放。

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

代码语言:javascript
复制
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和AVURLAsset,看看它们是否被去初始化.而且他们会的!所以我不知道为什么会这样。

通过使用仪器,我可以看到VM: Performance数据就是使用内存的东西,它永远不会被释放。

你有什么办法释放记忆吗?

为了释放内存,我应该如何处理AVQueuePlayer呢?

EN

回答 1

Stack Overflow用户

发布于 2017-12-03 12:19:25

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32933100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档